ORM expr评估空字符串

Bin*_*hen 3 symfony

我一直在使用并且仍在学习查询expr()。我有一个复杂的查询,如果先检查参数是否为''-空字符串,则无法使用。我必须使用类似以下内容的嵌套orX在andX内部对其进行检查:

->andWhere($expr->orX($expr->eq(':sid', ''), $expr->neq('s.id', ':sid')))
Run Code Online (Sandbox Code Playgroud)

注意:我知道这行可以通过先执行if检查来完成,我仅以一个示例为例,但出现错误提示:

Error: Expected Literal, got ' OR '
Run Code Online (Sandbox Code Playgroud)

我真的需要比较expr()中的空字符串,怎么办?

Emi*_*aos 8

因为''不是空字符串。没什么,因此在DQL / SQL中它没有任何价值。通常,学说需要一个命名参数。您可以创建一个以引用空字符串或提供自己引用的空字符串。

命名参数:

$qb->expr->eq('foo', ':foo');
$qb->expr->setParameter('foo', '');
Run Code Online (Sandbox Code Playgroud)

自己引用:

$qb->expr->eq('foo', "''");
Run Code Online (Sandbox Code Playgroud)