php Symfony querybuilder具有manyTomany关系和count函数

bjp0bcyl  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(101)

我在我的课程实体和用户实体中有一个manyTomany关系。course实体具有value members和user实体gameRounds。在我的course实体中,我还将maxMembers值设置为整数。现在,我想用querybuilder和course的值k以及users的值u创建一个教义查询,它测试课程成员的数量是否小于maxMembers值。

$qb->innerJoin('k.members','u');
    $qb->andWhere('k.id in (u.gameRounds)');
    $qb->addSelect('count(u.id) as countValue');
    $qb->andWhere('countValue <  :maxMembers');
    $qb->setParameter('maxMembers','k.maxMembers');

我测试了这个代码。但服务器给我一个错误,

[Semantical Error] line 0, col 144 near 'gameRounds) AND': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.

现在我更进一步:

$qb->join('k.members','u');
   $qb->having('count(u) < k.maxMembers');
   $qb->groupBy('k.id');

这看起来是可行的,但只适用于表中至少有一个值的条目。如何比较表中没有值的条目和count值为空的条目?我试过它与

$qb->having('ISNULL(count(u),0) < k.maxMembers');

但有一个错误:

[Syntax Error] line 0, col 123: Error: Expected known function, got 'ISNULL'
0qx6xfy6

0qx6xfy61#

$qb->leftJoin('k.members','u');
$qb->having('count(u.id) < k.maxMembers');
$qb->groupBy('k.id');

相关问题