我有一个项目,我正在工作,我有一个 Staff
, Customer
& Sale
模型。
正如所料, Staff
可以有很多 Sale
哪个有一个 Customer
-a Customer
也可以有很多 Sale
s。
在我正在处理的视图中,我希望显示所有 Customer
它属于 Staff
成员,但显示每个 Customer
只有一次(不同,分组?),但按最近的顺序排列 Sale
(销售日期,描述)。
我已经尝试了许多不同的方法来显示这一点,但目前有以下代码:
Customer::join('sales', 'customers.id', '=', 'sales.customer_id')
->where('sales.staff_id',$id)
->orderBy('sales.sale_date', 'DESC')
->select('customers.*')
->get();
这在很大程度上是有效的,除了一个奇怪的记录,8月的一半将有一个9月的记录。以下是我尝试过的其他一些方法:
$staff->sales()->orderBy('sale_date','DESC')->distinct('customer_id')->get();
Sale::select(DB::raw('s.*'))
->from(DB::raw('(SELECT * FROM sales WHERE staff_id = '.$id.' ORDER BY sale_date DESC) s'))
->groupBy('s.customer_id')
->orderBy('sale_date','DESC')
->get();
我并不特别介意归还一批 Sale
因为我可以修改我的视图来获得 Customer
对于每个 Sale
任何帮助/建议将不胜感激!
编辑:也注意到了,甚至不再有不同的客户:(
2条答案
按热度按时间9wbgstp71#
使用修改的
withCount()
要使用子查询获取最新销售信息,请执行以下操作:lqfhib0f2#
根据joins文档,join特性直接使用db而不是模型,因此尝试替换
Sale::select
与DB::table('sales')
.