使用JOIN从Zend_Db_Table中删除一行

时间:2011-11-30 09:55:47

标签: php zend-framework delete-row zend-db-table

我需要使用引用rence表的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);

我找到similar topic,看起来我应该使用$table->getAdapter()->query($sql);,但我希望更好。

1 个答案:

答案 0 :(得分:1)

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

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

所以这样做的方式与你的方式相同。检索不依赖于表的适配器,因此可以在当时与多个表进行交互。

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