【发布时间】:2020-04-27 06:41:48
【问题描述】:
如何在 Laravel 中 GROUP BY 多个级别。我试过这段代码。
我也使用了toArray() 然后array_values(),但结果与使用values() 相同
编辑:抱歉,我写的是 value() 而不是 values()
使用 values() 时,product_name 不显示。
// Controller
$products = DB::table('product_registrations')
// ->select(['product_name', 'color'])
->join('colors', 'colors.id', '=', 'product_registrations.color_id')
->join('sizes', 'sizes.id', '=', 'product_registrations.size_id')
->join('products', 'products.id', '=', 'product_registrations.product_id')
->get()
->groupBy(['product_name', 'color']);
// ->values(); // I've used values(), it worked but first level groupBy name missing
return response()->json(['products' => $products]);
---
I want something like:
products: [
product1: [
color1: {},
color2: {}
]
]
没有值()
{
"products": {
"light blue dress": {
"Ягаан": [
{
"id": 1,
"product_id": 1,
"color_id": 1,
"size_id": 6,
"color": "Ягаан",
"product_name": "light blue dress",
}
],
},
}
}
使用值()
{
"products": [
{
"Ягаан": [
{
"id": 1,
"product_id": 1,
"color_id": 1,
"size_id": 6,
"color": "Ягаан",
"product_name": "light blue dress",
}
],
}
]
}
【问题讨论】:
-
“Яган”在蒙古语中是粉红色的意思xD
-
请不要为此使用屏幕截图 - 复制粘贴问题中的代码。同样,如果没有
value(),我也不明白您的解决方案有什么问题 -
@ChristopheHubert,好的,我刚刚更新了帖子。我已经阅读了你的博客文章,但它只返回一个对象而不是数组。
-
对不起,你能否解释一下为什么最深的层次是数组而其他不是
-
感谢更新 - 您能否使用相同的详细信息分享您期望的代码?我实际上仍然对问题所在感到困惑。
标签: mysql database laravel eloquent