我需要使用引用引用表的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
的事情是,它意味着只与单个表一起工作。在此查询中,您试图访问多个表。
所以做这个的方法和你做的一样。检索适配器,它不依赖于表,因此可以同时与多个表交互。