Страницы

Поиск по вопросам

понедельник, 18 марта 2019 г.

Symfony 3, удалить записи из двух таблиц

Здравствуйте, мне нужно удалить записи из двух таблиц. Есть таблица orders которая связана по типу один ко многим с таблицей order_item. Нужно по некоторой выборке записей из orders удалить соответствующие запитси в order_item.
public function deleteOrders() { $dayClear = new DateTime('-2 days');
return $this->createQueryBuilder('o') ->delete('AdminBundle:Order', 'o') ->delete('AdminBundle:OrderItem', 'oi') ->leftJoin('AdminBundle:OrderItem', 'oi', 'WITH', 'oi.order_id = o.id')
->where('o.total IS NULL') ->andWhere('o.updated <= :dayClear') ->setParameter('dayClear', $dayClear) ->getQuery() ->getResult();
}
Я реализовал такой метод для удаления. но он не рабочий, при этом когда я комментирую строку
->delete('AdminBundle:OrderItem', 'oi')
то данные из первой таблице удаляются. В чем может быть проблема и как решить задачу? Заранее спасибо!


Ответ

Если реализовывать через DQL, думаю проще будет в первую очередь нужно найти ids. И потом можно сделать приблизительно так:
$this->createQueryBuilder('o') ->delete() ->from('AdminBundle:Order o, AdminBundle:OrderItem oi') ->whereIn('o.id', '?', $ids) ->whereIn('o.order_id', '?', $ids) ->getQuery() ->getResult();

Комментариев нет:

Отправить комментарий