【问题标题】:OR condition inside AND condition in createQueryBuilder depend on conditioncreateQueryBuilder 中的 AND 条件中的 OR 条件取决于条件
【发布时间】:2018-05-09 08:22:30
【问题描述】:

我们需要使用与createQueryBuilder 中的search 字符串匹配的“标签”的所有活动记录。

例如:搜索“NEW YORK”,在标签“new、ab、other”中内部搜索“NEW”或“YORK”

我的代码:

$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 . '.*/')))
        );
    }
}

它会给出结果active OR (tag1 Or tag2)。预期结果active AND (tag1 Or tag2)

有什么建议吗?

【问题讨论】:

    标签: mongodb symfony query-builder


    【解决方案1】:

    替换这个

    foreach ($searchArr as $searchVal) {
        $query->addOr(
    

    通过这个

    foreach ($searchArr as $searchVal) {
        $query->addAnd(
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-09
      • 1970-01-01
      • 2013-11-09
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多