Здравствуйте, мне нужно удалить записи из двух таблиц. Есть таблица 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();
Комментариев нет:
Отправить комментарий