如何使用 Laravel 查询构建器合并来自同一 table 的两个查询
How to combine two queries from the same table using Laravel query builder
根据这次销售 table,我创建了 2 个查询。
Sale::where(branch_id', 1)->select('*', DB::raw('SUM(amount) as amount))->groupBy('date')->get()
Sale::where(branch_id', 2)->select('*', DB::raw('SUM(amount) as amount))->groupBy('date')->get()
我想合并这两个查询...
实现这个
这是我的销售额table
因为除了一个整数外它们都是相同的,你可以简单地这样做:
Sale::whereIn('branch_id', [1, 2])->...
...并让查询的其余部分保持不变。
试试这个。
DB::table('Sale')->whereIn('branch_id',[1,'2])->get();
我想你在原始 SQL 中寻找的是这个:
SELECT
`date`,
SUM(IF(branch_id = 1, amount, 0)) as 'Branch 1',
SUM(IF(branch_id = 2, amount, 0)) as 'Branch 2',
SUM(amount) as 'Total'
FROM
branches
WHERE
branch_id IN (1,2)
GROUP BY
`date`;
不幸的是,您不能使用查询构建器来完成大部分工作,因此您需要使用 DB::raw()
来完成,像这样:
Sale::whereIn(branch_id', [1,2])->
select('date',
DB::raw("
SUM(IF(branch_id = 1, amount, 0)) as 'Branch 1',
SUM(IF(branch_id = 2, amount, 0)) as 'Branch 2',
SUM(amount) as amount
")
)->groupBy('date')->get();
我没有在 Laravel 中对此进行测试,因此它可能略有偏差,但它应该能让你接近。
根据这次销售 table,我创建了 2 个查询。
Sale::where(branch_id', 1)->select('*', DB::raw('SUM(amount) as amount))->groupBy('date')->get()
Sale::where(branch_id', 2)->select('*', DB::raw('SUM(amount) as amount))->groupBy('date')->get()
我想合并这两个查询...
实现这个
这是我的销售额table
因为除了一个整数外它们都是相同的,你可以简单地这样做:
Sale::whereIn('branch_id', [1, 2])->...
...并让查询的其余部分保持不变。
试试这个。
DB::table('Sale')->whereIn('branch_id',[1,'2])->get();
我想你在原始 SQL 中寻找的是这个:
SELECT
`date`,
SUM(IF(branch_id = 1, amount, 0)) as 'Branch 1',
SUM(IF(branch_id = 2, amount, 0)) as 'Branch 2',
SUM(amount) as 'Total'
FROM
branches
WHERE
branch_id IN (1,2)
GROUP BY
`date`;
不幸的是,您不能使用查询构建器来完成大部分工作,因此您需要使用 DB::raw()
来完成,像这样:
Sale::whereIn(branch_id', [1,2])->
select('date',
DB::raw("
SUM(IF(branch_id = 1, amount, 0)) as 'Branch 1',
SUM(IF(branch_id = 2, amount, 0)) as 'Branch 2',
SUM(amount) as amount
")
)->groupBy('date')->get();
我没有在 Laravel 中对此进行测试,因此它可能略有偏差,但它应该能让你接近。