Мне нужно выполнить удаление 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 (?))
Поиск Google и стека переполнения Я нашел (полезный) тему:
What is the syntax for a multi-table delete on a MySQL database using Doctrine? Но это не совсем мое дело - там было удалено из одной таблицы.
Если есть способ переопределить поведение парсера DQL? Или может быть какой-то другой способ удалить записи из нескольких таблиц с помощью доктрины?
Примечание: Если вы используете поведение доктрины (Doctrine_Record_Generator), вам нужно сначала инициализировать эти таблицы с помощью Doctrine_Core::initializeModels()
для выполнения операций DQL.