Symfony + доктрина: выберите пункт, где не работают

Предложение, где не работает с простым типом массива.
Состояние cc.isActive =: активный

return $qb->select('c')
->from('Win4uAdminBundle:ColorGammeCor', 'c')
->innerJoin('Win4uAdminBundle:Color', 'cc')
->where('c.type = :type')
->andWhere('cc.isActive = :active ')
->andWhere('c.gamme = :gamme_id')
->addGroupBy('c.colorExt')
->setParameter('type', $type)
->setParameter('active', 1)
->setParameter('gamme_id', $gammeId)
->getQuery()->getResult();

Вот поданное определение:

/**
* @ORM\Column(name="is_active", type="simple_array", columnDefinition="TINYINT(1) NULL")
*/
private $isActive;

Если содержимое поля is_active равно нулю, этот запрос возвращает записи … почему? Я спрашиваю только is_active = 1

Большое спасибо

0

Решение

Вы всегда можете отладить фактический вызов SQL Doctrine, выполнив $qb->getQuery()->getSQL() где $qb это ваш объект QueryBuilder, или, посмотрев на панель инструментов Symfony.

Есть две проблемы с кодом. Во-первых, определение $isActive поле неверно, оно должно быть логическим, а не simple_array:

/**
* @ORM\Column(name="is_active", type="boolean")
*/
private $isActive;

Во-вторых, внутреннее соединение должно указать отношение на Win4uAdminBundle:ColorGammeCorтак что должно быть что-то похожее на:

return $qb->select('c')
->from('Win4uAdminBundle:ColorGammeCor', 'c')
->innerJoin('c.color', 'cc')
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]