我需要從多個相關表中執行DQL刪除。 在SQL是這樣的:DQL從多個表中刪除(原則)
DELETE r1,r2
FROM ComRealty_objects r1, com_realty_objects_phones r2
WHERE r1.id IN (10,20) AND r2.id_object IN (10,20)
我需要執行使用DQL這種說法,但我堅持這一點。 :(
<?php
$dql = Doctrine_Query::create()
->delete('phones, comrealtyobjects')
->from('ComRealtyObjects comrealtyobjects')
->from('ComRealtyObjectsPhones phones')
->whereIn("comrealtyobjects.id", $ids)
->whereIn("phones.id_object", $ids);
echo($dql->getSqlQuery());
?>
但DQL解析器給了我這樣的結果:
DELETE FROM `com_realty_objects_phones`, `ComRealty_objects`
WHERE (`id` IN (?) AND `id_object` IN (?))
搜索谷歌和堆棧溢出,我發現這個(有用的)話題:
What is the syntax for a multi-table delete on a MySQL database using Doctrine? 但是,這不正是我的情況 - 有從單表中刪除
如果有一種方法可以覆蓋DQL解析器的行爲?或者是否有其他方法可以使用doctrine從多個表中刪除記錄?
注意:如果您使用的是doctrine行爲(Doctrine_Record_Generator),您需要首先使用Doctrine_Core::initializeModels()
對這些表進行初始化,以對它們執行DQL操作。