使用JOIN从Zend_Db_Table中删除一行

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);但我希望更好.

Jan*_*eks 1

不,你描述的方式就是正确的做法。

我假设Application_Model_DbTable_T1扩展Zend_Db_Table_Abstract或其子类。问题Zend_Db_Table_Abstract是它只适用于单个表。并且您正尝试在此查询中访问多个表。

因此,执行此操作的方法与您正在执行的方法相同。检索Adapter,它不依赖于表,因此可以同时与多个表交互。

TL;DR:这是正确的方法。