具有 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