我有一个表Seller、Products、Invoice和invoice_product。我想创建一个销售日报表,其中卖方名称作为行标题,产品作为列,如下所示
| | 卖方A|卖方B|卖方C|共计|
| - ------| - ------| - ------| - ------| - ------|
| * * 产品1**|第二章|1个|三个|六个|
| * * 产品2**| 1个|无|第二章|三个|
| * * 产品3**|五个|第二章|1个|八个|
我想要的是由每个卖家出售的产品数量,如果没有任何产品ID发票_产品中可用的任何卖家比应该由零。我无法拿出任何解决方案。
- 卖方表**
- 身份证
- 卖方_名称
- 发票表**
- 身份证
- 卖方标识
- 总计
- 产品表**
- 身份证
- 姓名
- 发票_产品表**
- 身份证
- 发票标识
- 产品标识
- 数量
- 数量
我试过了
$sales = Invoice::select(
'seller_id',
'invoice_product.product_id',
DB::raw('SUM(invoice_product.qty) as qty')
)
->groupBy('invoice_product.product_id', 'seller_id')
->join('invoice_product', 'invoice.id', '=', 'invoice_product.invoice_id')
->whereIn('seller_id', [1, 2])
->whereIn('invoice_product.product_id', [1, 2, 3])
->get();
有人知道如何获得想要的结果吗?
1条答案
按热度按时间xmd2e60i1#
我有一个解决方案给你,利用卖方模型,而不是发票和使用软件包staudenmeir/雄辩有很多深.
这是卖方模型内部的关系
这个解决方案确实需要运行多个查询,这取决于你有多少卖家。