【发布时间】:2021-12-31 18:42:35
【问题描述】:
执行程序后,我有这样的表
SELECT ROW_NUMBER() OVER(ORDER BY t.name)new_id,
t.name AS cat_name,
f.id AS id_food
FROM food AS f
INNER JOIN categories AS t
ON t.id = f.id_cat
WHERE f.quantity > 0
ORDER BY t.name
| new_id | cat_name | id_food |
|---- |------ | ----- |
| 1 | Seafood | 1 |
| 2 | Seafood | 3 |
| 3 | Seafood | 5 |
| 4 | Beef | 2 |
| 5 | Beef | 16 |
| 6 | Special | 7 |
这是我的控制器和过程中的 JSON 值
public function first(){
$fi = DB::select("CALL GetListCat()");
return response()->json($fi);
}
Result: [{"new_id":1,"cat_name":"Seafood"},
{"new_id":2,"cat_name":"Seafood"},
{"new_id":3,"cat_name":"Seafood"},
{"new_id":4,"cat_name":"Beef"},
{"new_id":5,"cat_name":"Beef"},
{"new_id":6,"cat_name":"Special"}]
现在我想在 cat_name 字段上使用 GROUP BY 所以当我返回 JSON 时,它应该只获得每个 cat_name 的第一个值,就像这样(我需要 @987654325 @字段留)
| new_id | cat_name | id_food |
|---- |------ | ----- |
| 1 | Seafood | 1 |
| 4 | Beef | 2 |
| 6 | Special | 7 |
Result desired: [{"new_id":1,"cat_name":"Seafood"},
{"new_id":4,"cat_name":"Beef"},
{"new_id":6,"cat_name":"Special"}]
我怎样才能做到这一点?
【问题讨论】:
-
对 Laravel 集合进行分组非常简单。您尝试了什么,遇到了什么问题?
-
好吧,我尝试使用简单的 groupBy 像
DB::select("CALL GetListCat()")->groupBy('cat_name')->get();并显示错误调用数组上的成员函数 groupBy() -
那是因为
DB::select()返回一个数组。请参阅下面的答案...
标签: laravel stored-procedures eloquent