Предложение, в котором не работает простой тип массива. Условие: cc.isActive =: active
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 равно null, этот запрос возвращает записи... почему? Я спрашиваю только is_active = 1
Большое спасибо
Вы всегда можете отлаживать фактическую Doctrine SQL, вызывая выполнение $qb->getQuery()->getSQL()
где $qb
- ваш объект QueryBuilder, или просмотрев панель инструментов Symfony.
В коде есть две проблемы. Во-первых, определение поля $isActive
неверно, оно должно быть логическим, а не простым_рассером:
/**
* @ORM\Column(name="is_active", type="boolean")
*/
private $isActive;
Во-вторых, innerJoin должен указать отношение к Win4uAdminBundle:ColorGammeCor
, поэтому он должен быть чем-то похожим на:
return $qb->select('c')
->from('Win4uAdminBundle:ColorGammeCor', 'c')
->innerJoin('c.color', 'cc')