2011-11-30 49 views
4

我需要使用引用rence表的Zend_Db_Table来删除一条记录。 在SQL查询应该是这样的:使用JOIN从Zend_Db_Table中删除一行

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

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

我假设Application_Model_DbTable_T1延伸Zend_Db_Table_Abstract或其子类。关于Zend_Db_Table_Abstract的一点是,它只能用于单个表格。并且您试图访问此查询中的多个表。

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

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