2017-01-30 15 views
0

this answer on how to check for the (non)existance of related entities using Doctrine's is empty query相關的,我嘗試在Doctrine Expression中使用它,但是Expr Class沒有使用is empty的文檔方法。 isNull不起作用。所以我正在尋找的表達式如下:如何在表達式中使用Doctrine的「爲空」?

// 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表單過濾器中),但這只是一種解決方法。

回答

2

由於comparison expressions的操作數是DQL表達式本身可以這樣寫:

$qb->expr()->gt('size(e.relatedEntities)', 0) 

他們得到轉換爲在表達式的__toString()方法的DQL字符串,在這種情況下的定義是:

$this->leftExpr . ' ' . $this->operator . ' ' . $this->rightExpr; 

所以這應該會產生:

"size(e.relatiedEntities) > 0" 

延伸閱讀:

由於$qb->expr()只是返回Doctrine\ORM\Query\Expr對象,如果您需要關於構建更復雜表達式的一些信息,可以查看該命名空間的類。

相關問題