資源
Laravel7 30天: 目錄
專案連結: github - laravel7 之 30 天分享
前言
專案連結: github - laravel7 之 30 天分享
上一篇: Day 20. Eloquent Polymorphic Relationships 多態的多對多
今天要來分享 Collection
主要
上文件
資料庫取出來預設都是 collection,
以前還不知道這東西時,都是全部轉成 array 在依照需求直接整理
後來才慢慢發現 collection 這個好東西
看起來跟 array 做一樣的事情
不過 code 看起來會比較好看而且可讀性也比較高,會相對好維護
以下提供幾個我常用的 function
functions
map()
你想將資料庫的值取出後,做一些加工整理就可以使用這個
1
2
3
4
5
6
7
8
9
| $products = Product::get();
$data = $products->map(function($product) {
return [
'code' => $product->code,
'name' => $product->name,
'price' => $product->price,
];
});
|
以上如果使用 php 原生方法
1
2
3
4
5
6
7
8
9
10
| $products = Product::get();
$data = [];
foreach($products as $product) {
$data[] = [
'code' => $product->code,
'name' => $product->name,
'price' => $product->price,
];
}
|
是不是 map 使用上會比較好看一點呢?
groupBy()
概念跟資料庫的 groupby 很像,
就是將資料群組起來
群組起來的會當作他的 key
以上面的例子
1
2
3
4
5
| $products = Product::get();
$data = $products->groupBy(function($product) {
return $product->type;
});
|
商品就會依照他的類別 type
群組起來
filter()
沒啥好說的
直接放範例你們就會懂了
就是篩選你們要的資料而已
1
2
3
4
5
6
7
| $collection = collect([1, 2, 3, 4]);
$filtered = $collection->filter(function ($value, $key) {
return $value > 2;
});
$filtered->all();
|
結語
還有很多好方法,
我嘗嘗懊惱怎麼整理好資料時就會參考官方的 collection 的方法們