[英]OR condition inside AND condition in createQueryBuilder depend on condition
We need all active records using "tag" which matches search
string in createQueryBuilder
. 我们需要所有使用“ tag”的活动记录,这些记录与
createQueryBuilder
中的search
字符串匹配。
For Ex: Search for "NEW YORK" which internally search for "NEW" or "YORK" in Tags "new, ab, other" 例如:搜索“ NEW YORK”,该内部在标签“ new,ab,other”中搜索“ NEW”或“ YORK”
My CODE: 我的密码:
$query = $this->createQueryBuilder();
$query->field('status')->equals("active");
if (isset($params["search"]) && !empty($params["search"])) {
$searchArr = explode(" ", $params["search"]);
foreach ($searchArr as $searchVal) {
$query->addOr(
$query->expr()->addOr($query->expr()->field('tags')->equals(new \MongoRegex('/.*' . $searchVal . '.*/')))
);
}
}
It will give result active OR (tag1 Or tag2)
. 它将使结果为
active OR (tag1 Or tag2)
。 Expected result active AND (tag1 Or tag2)
预期结果
active AND (tag1 Or tag2)
Any suggestions? 有什么建议么?
Replace this 取代这个
foreach ($searchArr as $searchVal) {
$query->addOr(
by this 这样
foreach ($searchArr as $searchVal) {
$query->addAnd(
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.