有没有办法结合 Laravel 查询构建器条件?

Ske*_*ets 2 laravel laravel-query-builder laravel-5.5

假设我有 2 个查询构建器:

$builderA = User::where("happiness", ">", 5);
$builderB = User::where("color", "blue");
Run Code Online (Sandbox Code Playgroud)

除了输入一个新的构建器之外,有没有一种方法可以组合这两个构建器,从而得到如下所示的构建器?

$combined = User::where("happiness", ">", 5)->where("color", "blue");
Run Code Online (Sandbox Code Playgroud)

Dig*_*ter 5

对于更复杂的情况,您可以使用tapmergeWheres

$where = User::where('a', 1)->where('b', '>', 2)->where('c', '<', 2)->where('d', '<>', 2);

$combined = User::where('e', 5)->tap(function (Builder $builder) use ($where) {
    $builder->mergeWheres($where->wheres, $where->getBindings());
});
Run Code Online (Sandbox Code Playgroud)

Laravel 5.6 添加了几种处理子查询的方法: