与如何使用 Doctrine 的is empty
查询检查相关实体的(不存在)的答案相关,我尝试在 Doctrine 表达式中使用它,但 Expr
类没有记录的使用方式is empty
。 isNull
不起作用。所以我正在寻找的是一个表达式,例如:
// filter for e with no relatedEntities
$qb->expr()->isEmpty('e.realatedEntities');
// filter for e with relatedEntities
$qb->expr()->isNotEmpty('e.realatedEntities');
那么对此有什么想法吗?
教义的SIZE
在Expr
类中也没有等价物。 我错过了什么吗?现在,作查询对象而不是返回表达式(在 Symfony 的 Lexik 表单过滤器绑定中),但这只是一个解决方法。
由于比较表达式的操作数本身是 DQL 表达式,因此您可以编写:
$qb->expr()->gt('size(e.relatedEntities)', 0)
它们在表达式的 __toString()
方法中转换为 DQL 字符串,在本例中定义为:
$this->leftExpr . ' ' . $this->operator . ' ' . $this->rightExpr;
所以这应该产生:
"size(e.relatiedEntities) > 0"
延伸阅读:
由于$qb->expr()
只执行返回DoctrineORMQueryExpr
对象,因此如果需要有关构建更复杂的表达式的一些信息,则可以查看该命名空间的类。