#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();
Комментариев нет:
Отправить комментарий