具有 none 或少于关系的学说 2 select 个实体
Doctrine 2 select entities with none or less than relations
我正在尝试查找具有 none 或少于 3 个关系的所有行。最好的方法是什么?
我用几个不同的选择、有、加入尝试了以下代码,但我不知道如何以正确的方式做到这一点:
$db = $this->createQueryBuilder('u');
$db->addSelect('COALESCE(COUNT(errors), 0) AS HIDDEN errorCount');
$db->join('u.errors', 'errors');
$db->where('u.field1 IS NULL AND u.field2 NOT LIKE \'\'');
$db->having('errorCount < 3');
非常感谢您。
COUNT
函数是一个聚合函数,它将 return 一个单一的结果,除非你指示它按某些东西分组。
$db = $this->createQueryBuilder('u');
$db->addSelect('COUNT(errors) AS HIDDEN errorCount');
$db->leftJoin('u.errors', 'errors');
$db->where('u.field1 IS NULL AND u.field2 NOT LIKE \'\'');
$db->having('errorCount < 3');
$db->groupBy('u');
此外,如果您想计算可能存在或不存在的关系的数量,请使用 LEFT JOIN
。这些结果的计数将是 0
,即 < 3
。
我正在尝试查找具有 none 或少于 3 个关系的所有行。最好的方法是什么?
我用几个不同的选择、有、加入尝试了以下代码,但我不知道如何以正确的方式做到这一点:
$db = $this->createQueryBuilder('u');
$db->addSelect('COALESCE(COUNT(errors), 0) AS HIDDEN errorCount');
$db->join('u.errors', 'errors');
$db->where('u.field1 IS NULL AND u.field2 NOT LIKE \'\'');
$db->having('errorCount < 3');
非常感谢您。
COUNT
函数是一个聚合函数,它将 return 一个单一的结果,除非你指示它按某些东西分组。
$db = $this->createQueryBuilder('u');
$db->addSelect('COUNT(errors) AS HIDDEN errorCount');
$db->leftJoin('u.errors', 'errors');
$db->where('u.field1 IS NULL AND u.field2 NOT LIKE \'\'');
$db->having('errorCount < 3');
$db->groupBy('u');
此外,如果您想计算可能存在或不存在的关系的数量,请使用 LEFT JOIN
。这些结果的计数将是 0
,即 < 3
。