Laravel雄辩的建设者与OR条件合并

时间:2017-12-10 21:21:06

标签: php laravel eloquent laravel-5.5

我已经构建了多个Builder实例。它们中的每一个都包含一些复杂的“where”条件。

enter image description here

我需要将它们合并到一个大型构建器中,以便只向数据库发出一个请求。它们应该合并为((构建器1)OR(构建器2)....)其中每个构建器N扩展为一些SQL查询。

在Yii中,我使用了这个函数mergeWith。我在Laravel中找不到类似的功能。你能指点一下如何通过雄辩来正确地做到这一点吗?

EDITED

这就是single Builder

的外观

所有其他构建器在Where子句中只包含不同的单词。

1 个答案:

答案 0 :(得分:0)

啊哈!找到了。这就是我猜它应该如何。 封闭内部的一切都插入括号中。 我们得到结果((..)OR(...))等

   $builderMain = collect($searchWords)->reduce(function($carry, $searchWord) 
    {
      return  $carry->orWhere(function($query) use ($searchWord)
        {

          $query->where('...');
          $query->where('...');
          $query->where('...');
          $query->where('...');
           ......
      };
  ....
  }, BigMoney::query());

如果有更好的选择,我会接受你的回答。仍然愿意接受建议