2015-11-09 74 views
2

我一直在使用並仍在學習查詢expr()。如果首先檢查參數是否爲'' - 空字符串,我有一個複雜的查詢。 我有使用嵌套或X喜歡的事,以檢查它的內部和X:ORM expr評估空字符串

->andWhere($expr->orX($expr->eq(':sid', ''), $expr->neq('s.id', ':sid'))) 

注:我知道這條線可以使用,如果首先檢查來完成,我使用它只是一個例子,我有錯誤說:

Error: Expected Literal, got ' OR ' 

我真的需要比較expr()裏面的空字符串,怎麼樣?

+0

如果's.id'比較'NULL',你可以嘗試[$ expr-> ISNULL()( http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/query-builder.html#the-expr-class) – Artamiel

回答

3

因爲''不是空字符串。這沒什麼,因此它在DQL/SQL中沒有任何評估。通常教義期望一個命名參數。要麼你創建一個獲得空引號的字符串,要麼提供一個你自己引用的空字符串。

命名參數:

$qb->expr->eq('foo', ':foo'); 
$qb->expr->setParameter('foo', ''); 

自己引:

$qb->expr->eq('foo', "''");