Symfony + doctrine:选择不起作用的条款

时间:2014-11-27 13:43:49

标签: php symfony doctrine-orm doctrine symfony-2.3

不使用简单数组类型的子句。 条件是 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

非常感谢

1 个答案:

答案 0 :(得分:1)

您可以通过执行$qb->getQuery()->getSQL()调用实际的SQL Doctrine调用,其中$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}}