使用JOIN从Zend_Db_Table中删除一行


Delete a row from Zend_Db_Table using JOIN

我需要使用引用引用表的Zend_Db_Table删除一条记录。在SQL中,查询看起来像这样:

DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id=t2.id WHERE t2.id IS NULL;

是否有比下面的代码更优雅的方法?

$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);

我发现了一个类似的主题,看起来我应该使用$table->getAdapter()->query($sql);,但我希望更好。

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

我假设Application_Model_DbTable_T1扩展了Zend_Db_Table_Abstract或其子类。关于Zend_Db_Table_Abstract的事情是,它意味着只与单个表一起工作。在此查询中,您试图访问多个表。

所以做这个的方法和你做的一样。检索适配器,它不依赖于表,因此可以同时与多个表交互。