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

272
18 июля 2017, 20:24

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

то данные из первой таблице удаляются. В чем может быть проблема и как решить задачу? Заранее спасибо!

Answer 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();
READ ALSO
предупреждение при компиляции your program has exited with error code: -2147483647. Подскажите как исправить [требует правки]

предупреждение при компиляции your program has exited with error code: -2147483647. Подскажите как исправить [требует правки]

предупреждение при компиляции your program has exited with error code: -2147483647Подскажите как исправить

266
Не работает перегруженный operator[]

Не работает перегруженный operator[]

Это часть заголовочного файла:

241
Как найти первое вхождение строки и вернуть всю строку(в которой искали) до конца с места вхождения?

Как найти первое вхождение строки и вернуть всю строку(в которой искали) до конца с места вхождения?

Учу С++ по книге Страуструпа, есть такое задание в конце главы : "Напишите функцию char* findx(const char* s, const char* х) , нахо* дящую первое вхождение С-строки...

272
Не могу разобраться с работой qt_wrap_ui (cmake qt)

Не могу разобраться с работой qt_wrap_ui (cmake qt)

Я только начал изучать QtИспользую clion и соответственно cmake

318