2011-11-30 33 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:這是正確的方法。