Страницы

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

пятница, 24 января 2020 г.

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

#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();

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

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