程序员,我使用symfony doctrine和mongodb。今天我尝试创建以下查询:
$q = $this->createQueryBuilder("user");
$keywords = explode("_", $keyword);
foreach ($keywords as $keyword) {
$r = new \MongoRegex('/'.$keyword.'/i');
$q->addAnd(
$q->addOr($q->expr()->field('firstName')->equals($r))
->addOr($q->expr()->field('lastName')->equals($r))
);
}
return $q->getQuery()->execute();
但是在执行()后我得到以下错误“不允许使用零长度键,你是否使用带双引号的$”。查询必须通过关键字实现用户搜索。你可以帮我解决这个问题吗?
答案 0 :(得分:1)
如果有人感兴趣,我通过使用单独的“或”表达式找到解决方案:
$q = $this->createQueryBuilder();
$keywords = explode(" ", $keyword);
foreach ($keywords as $keyword) {
$r = new \MongoRegex('/'.$keyword.'/i');
$q->addOr($q->expr()->field('firstName')->equals($r));
$q->addOr($q->expr()->field('lastName')->equals($r));
}
return $q->getQuery()->execute();
希望我的经验会有所帮助