如何在表达式中使用教义"is empty"?



与如何使用 Doctrine 的is empty查询检查相关实体的(不存在)的答案相关,我尝试在 Doctrine 表达式中使用它,但 Expr 类没有记录的使用方式is emptyisNull不起作用。所以我正在寻找的是一个表达式,例如:

// filter for e with no relatedEntities
$qb->expr()->isEmpty('e.realatedEntities');
// filter for e with relatedEntities
$qb->expr()->isNotEmpty('e.realatedEntities');

那么对此有什么想法吗?

教义的SIZEExpr类中也没有等价物。 我错过了什么吗?现在,作查询对象而不是返回表达式(在 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对象,因此如果需要有关构建更复杂的表达式的一些信息,则可以查看该命名空间的类。

相关内容

  • 没有找到相关文章

最新更新