Мне нужно выполнить удаление DQL из нескольких связанных таблиц.
В SQL это примерно так:
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 (?))
Поиск в Google и переполнение стека Я нашел эту (полезную) тему:
Каков синтаксис удаления нескольких таблиц в базе данных MySQL с использованием Doctrine?
Но это не совсем мой случай - было удаление из одной таблицы.
Если есть способ переопределить поведение анализатора DQL? Или, может быть, есть какой-то другой способ удаления записей из нескольких таблиц с использованием доктрины?
Примечание. Если вы используете поведения доктрин (Doctrine_Record_Generator), вам сначала нужно инициализировать эти таблицы, используя Doctrine_Core::initializeModels()
для выполнения над ними операций DQL.