Min*_*ras 5 php zend-framework zend-db-table delete-row
我需要使用引用rence表的Zend_Db_Table删除记录.在SQL中,查询看起来像这样:
DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;
Run Code Online (Sandbox Code Playgroud)
有没有办法比下面的代码更优雅?
$table = new Application_Model_DbTable_T1();
$sql = 'DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;';
$table->getAdapter()->query($sql);
Run Code Online (Sandbox Code Playgroud)
我发现了一个类似的主题,看起来我应该使用,$table->getAdapter()->query($sql);
但我希望更好.
不,你描述的方式就是正确的做法。
我假设Application_Model_DbTable_T1
扩展Zend_Db_Table_Abstract
或其子类。问题Zend_Db_Table_Abstract
是它只适用于单个表。并且您正尝试在此查询中访问多个表。
因此,执行此操作的方法与您正在执行的方法相同。检索Adapter,它不依赖于表,因此可以同时与多个表交互。
TL;DR:这是正确的方法。