在此销售表中,我创建了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()
我想结合两个查询...
实现此目标
这是我的销售表
答案 0 :(得分:3)
由于除了整数之外它们都是相同的,你可以这样做:
Sale::whereIn('branch_id', [1, 2])->...
...让其余的查询保持不变。
答案 1 :(得分:2)
我认为您在原始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`;
很遗憾,您无法使用querybuilder完成大部分操作,因此您需要使用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中对此进行过测试,所以可能会略微偏离,但它会让你接近。
答案 2 :(得分:0)
试试这个。
DB ::表( '销售') - >其中( 'branch_id',[1,'2]) - >得到();