创建一个 "base" 查询,queryBuilder

Create a "base" query, queryBuilder

我觉得这很容易,但我找不到解决方案。

我必须从许多 table 中创建查询,但其中许多有一个 table 与 table 相同的条件,我有 "big" 想创造一个 "basequery"。这是例子。

$baseQuery = DB:: ('table')->where ('condition_in_common', 1);

$bar = $baseQuery->join ('bar', 'table_id', '=', 'table.id')
    ->where (myOwnConditions);

$foo = $baseQuery->join ('foo', 'table_id', '=', 'table.id')
    ->where (myOwnConditions);

我希望有 2 个查询,一个用于 table "bar",另一个用于 "foo"

select * from `table` inner join `bar` on `table`.`id` = `table_id` where condition_in_commom = 1 and myOwnConditions;

select * from `table` inner join `foo` on `table`.`id` = `table_id` where condition_in_commom = 1 and myOwnConditions;

但不是这样的。

您可以这样做,但您必须 clone 查询,否则您将始终使用相同的构建器实例 class:

$baseQuery = DB::table('table')->where('condition_in_common', 1);

$barQuery = clone $baseQuery;
$fooQuery = clone $fooQuery;

$bar = $barQuery->join('bar', 'table_id', '=', 'table.id')
                ->where(myOwnConditions)
                ->get();

$foo = $fooQuery->join('foo', 'table_id', '=', 'table.id')
                ->where(myOwnConditions)
                ->get();