#php #symfony #symfony3 #doctrine2
Здравствуйте, мне нужно удалить записи из двух таблиц. Есть таблица 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')
то данные из первой таблице удаляются.
В чем может быть проблема и как решить задачу? Заранее спасибо!
Ответы
Ответ 1
Если реализовывать через DQL, думаю проще будет в первую очередь нужно найти ids. И потом можно сделать приблизительно так: $this->createQueryBuilder('o') ->delete() ->from('AdminBundle:Order o, AdminBundle:OrderItem oi') ->whereIn('o.id', '?', $ids) ->whereIn('o.order_id', '?', $ids) ->getQuery() ->getResult();
Комментариев нет:
Отправить комментарий