我需要使用引用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);
,但我希望更好。
答案 0 :(得分:1)
不,你描述它的方式是正确的方法。
我假设Application_Model_DbTable_T1
扩展Zend_Db_Table_Abstract
或其子类。关于Zend_Db_Table_Abstract
的事情是,它只适用于单个表。并且您尝试在此查询中访问多个表。
所以这样做的方式与你的方式相同。检索不依赖于表的适配器,因此可以在当时与多个表进行交互。
TL; DR:这是正确的方法。