我有一個(gè)示例表,如下所示:| id | is_new | cate || 0 | 1 | [5] || 1 | 1 | [5] || 2 | 1 | [7] || 3 | 1 | [6] |在我調(diào)用以下函數(shù)之后 $product = Products::where('is_new', 1)->get();該集合具有以下數(shù)據(jù)結(jié)構(gòu)Collection {#1284 ▼ #items: array:4 [▼ 0 => Products {#1285 ?} 1 => Products {#1286 ?} 2 => Products {#1287 ?} 3 => Products {#1288 ?} ]}我還可以通過(guò)以下方式返回類(lèi)別 ID 列表: $category = Category::where('type', 2)->pluck('id')->all(); 我想知道有沒(méi)有什么好的方法來(lái)實(shí)現(xiàn)基于 cate 的以下結(jié)構(gòu)(或類(lèi)似結(jié)構(gòu))。我可以使用蠻力方法通過(guò)循環(huán) $category 然后手動(dòng)添加到新集合來(lái)創(chuàng)建它,我認(rèn)為有更好的方法來(lái)做到這一點(diǎn)。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貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
你應(yīng)該看看使用類(lèi)似的東西groupBy
將你的類(lèi)別組合在一起。它可以使用外鍵在數(shù)據(jù)庫(kù)級(jí)別(假設(shè)您具有引用完整性)上完成。您還可以保證返回的是每個(gè)類(lèi)別的數(shù)組,這將使事情更加一致(您不需要檢查它是數(shù)組還是 , 的實(shí)例Products
)。
如果您的類(lèi)別像數(shù)組一樣存儲(chǔ),您可能需要更改數(shù)據(jù)庫(kù)布局,但為此您應(yīng)該使用中間表 - 查看多對(duì)多關(guān)系。
- 1 回答
- 0 關(guān)注
- 255 瀏覽
添加回答
舉報(bào)
0/150
提交
取消