我已经构建了多个Builder实例。它们中的每一个都包含一些复杂的“where”条件。
我需要将它们合并到一个大型构建器中,以便只向数据库发出一个请求。它们应该合并为((构建器1)OR(构建器2)....)其中每个构建器N扩展为一些SQL查询。
在Yii中,我使用了这个函数mergeWith。我在Laravel中找不到类似的功能。你能指点一下如何通过雄辩来正确地做到这一点吗?
EDITED
这就是single Builder,
的外观所有其他构建器在Where子句中只包含不同的单词。
答案 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());
如果有更好的选择,我会接受你的回答。仍然愿意接受建议