У меня есть проект, над которым я работаю, и у меня есть модель Staff
, Customer
& Sale
.
Как и ожидалось, Staff
может иметь множество Sale
с одним Customer
- A Customer
также может иметь множество Sale
с.
В представлении, над которым я работаю, я хочу отобразить все Customer
, принадлежащие элементу Staff
, но отображать каждый Customer
только один раз (DISTINCT, GROUP BY?), Но в порядке наиболее недавний Sale
(sale_date, DESC).
Я пробовал много разных способов показать это, но в настоящее время есть этот код:
Customer::join('sales', 'customers.id', '=', 'sales.customer_id')
->where('sales.staff_id',$id)
->orderBy('sales.sale_date', 'DESC')
->select('customers.*')
->get();
Который работает по большей части, за исключением странной записи, где в середине августа будет запись с сентября. Вот несколько других способов, которые я пробовал:
$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
Любая помощь / совет будет принята с благодарностью!
РЕДАКТИРОВАТЬ: Просто также заметил, даже не получить больше клиентов тоже: (