为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 雄辩,基于 Column 值创建集合

Laravel 雄辩,基于 Column 值创建集合

PHP
泛舟湖上清波郎朗 2022-10-14 14:47:47
我有一个示例表,如下所示:| id | is_new | cate || 0  |   1    | [5]  || 1  |   1    | [5]  || 2  |   1    | [7]  || 3  |   1    | [6]  |在我调用以下函数之后   $product = Products::where('is_new', 1)->get();该集合具有以下数据结构Collection {#1284 ▼  #items: array:4 [▼    0 => Products {#1285 ▶}    1 => Products {#1286 ▶}    2 => Products {#1287 ▶}    3 => Products {#1288 ▶}  ]}我还可以通过以下方式返回类别 ID 列表:    $category = Category::where('type', 2)->pluck('id')->all();  我想知道有没有什么好的方法来实现基于 cate 的以下结构(或类似结构)。我可以使用蛮力方法通过循环 $category 然后手动添加到新集合来创建它,我认为有更好的方法来做到这一点。Collection {#1284 ▼  #items: array:3 [▼    5 => array:2 [▼         0 => Products {#1285 ▶}         1 => Products {#1286 ▶}         ]    6 => Products {#1287 ▶}    or  6 => array:1 [ 0 => Products {#1287 ▶} ]    7 => Products {#1288 ▶}  ]}基于答案的解决方案更新:$product->groupBy(function($item) {        return $item['cate'][0]; //because the entry is a list    });
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

你应该看看使用类似的东西groupBy将你的类别组合在一起。它可以使用外键在数据库级别(假设您具有引用完整性)上完成。您还可以保证返回的是每个类别的数组,这将使事情更加一致(您不需要检查它是数组还是 , 的实例Products)。

如果您的类别像数组一样存储,您可能需要更改数据库布局,但为此您应该使用中间表 - 查看多对多关系


查看完整回答
反对 回复 2022-10-14
  • 1 回答
  • 0 关注
  • 212 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信