![](/img/trans.png)
[英]Laravel: how to make hasMany relation for rows with highest value and using groupBy
[英]How to filter the groupBy() to only show the highest value in every group in Laravel?
我收集這些數據的目的是讓孩子上最新的課。
我的桌子:
| id | child_id | class_id |
|----|----------|------------|
| 1 | 1 | 15 |
| 2 | 2 | 18 |
| 3 | 1 | 19 |
| 4 | 1 | 17 |
預期結果:
| id | child_id | class_id |
|----|----------|------------|
| 2 | 2 | 18 |
| 4 | 1 | 17 |
實際結果:
| id | child_id | class_id |
|----|----------|------------|
| 1 | 1 | 15 |
| 2 | 2 | 18 |
我目前正在使用Enrolment::orderBy('id', 'desc')->groupBy('child_id')->get();
。 但是,它不能正常工作。
試試這個代碼。
select * from table1
where id in (
select
Max(id) as t.id
from table1 as t
GROUP BY t.child_id ORDER BY t.id desc
)
這樣,它可以解決您的問題:
SELECT * FROM `table_name` WHERE `id` IN (SELECT MAX(`id`) FROM `table_name` GROUP BY `child_id`)
您可以使用MAX
顯示最高價值
$response= Enrolment::groupBy('child_id')->get(['child_id', DB::raw('MAX(class_id) as class_ids')]);
並將結果打印為
echo "<pre>";
print_r($response->toArray());
輸出將是
Array
(
[0] => Array
(
[child_id] => 1
[class_ids] => 19
)
[1] => Array
(
[child_id] => 2
[class_ids] => 18
)
)
不要忘了導入use DB;
在控制器中
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.