0
我是CreateQueryBuilder的新手,我有一个非常复杂的查询,嵌套和 - >或 - >和条件。它几乎奏效(感谢Patrik Karisch),但我被一个简单而“愚蠢”的问题所阻挡。我只想在列或参数的值不为空时比较字符串列。 (注意:我不能使用if和add,我必须使用orX中的逻辑)。 $ expr-> NEQ(“s.studentEmail”,“”)总是返回我真当淡水河谷“”,但我期待虚假symfony qurybuilder比较字符串时不空
$queryBuilder = $repo->createQueryBuilder('s');
$expr = $queryBuilder->expr();
->andWhere($expr->orX(
$expr->andX($expr->neq('s.studentEmail', ''), $expr->isNotNull('s.studentEmail'), $expr->like('lower(s.studentEmail)', 'lower(:email)'),
$expr->......
谢谢Cerad,我的实际查询很复杂,有几个,然后代码。 ($ expr-> andX($ expr-> neq(':email',''),$ expr-> like('lower(s.studentEmail)','lower( ('phone',''),$ expr-> like('s.homePhone',':phone')), –
- >和其中('s.homePhone =:phone或s.studentMobile =:mphone或更低(s.studentEmail)=:电子邮件') –
- > andWhere('s.homePhone =:phone或s.studentMobile =:mphone或更低(s.studentEmail)=:电子邮件') 我还需要检查而不是比较''(空) 如果检查所有的条件组合,将不会有很多if-else-如 if $ email!=''&& $ studentPhone!=''&& $ homePhone!='') $ query-> andWhere else if($ email!=''&& $ studentPhone!='') $ query->并在($ email!=''&& $ homePhone!='') $ query-> andWhere then然后如果($ studentPhone!=''&& $ homePhone!='') 然后,然后 每一个由他们 –