Запуск подзапроса в доктрине не дает правильного результата

SQL

ГДЕ код = 'abc' И (имя_столбца НЕ В ('436') или имя_столбца равно нулю)

Кодекс доктрины

            ->innerJoin('Bundle:Web', 'p', 'WITH', 'b.pid= p.id')
            ->where('a.code= :cust_id')
            ->andWhere('p.column_name  NOT IN ( :id)')
            ->setParameter('id', array_keys($id)[0])
            ->orWhere('p.column_name  is null')  

Запуск Dql дает другой результат в Symfony2.

  • любое предложение приветствуется.

person afeef    schedule 17.04.2018    source источник
comment
Ваш первый запрос – X AND (Y OR Z), но второй – X AND Y OR Z, который совпадает с (X AND Y) OR (Z). Этот шаблон кажется распространенным: stackoverflow.com/questions/6878448/doctrine-or-where   -  person MatBailie    schedule 17.04.2018
comment
Спасибо MAT я решил эту проблему   -  person afeef    schedule 17.04.2018
comment
я должен опубликовать правильный ответ здесь   -  person afeef    schedule 17.04.2018
comment
Да, это помогло бы людям.   -  person MatBailie    schedule 17.04.2018


Ответы (1)


решение, которое я пробовал

        ->innerJoin('Bundle:Web', 'p', 'WITH', 'b.pid= p.id')
        ->where('a.code= :cust_id')
        ->andWhere('p.column_name  NOT IN ( :id) or p.column_name  is null ')
        ->setParameter('id', array_keys($id)[0])

здесь, в приведенном выше dql, он сохраняет условие orWhere в dql.

person afeef    schedule 17.04.2018