Featured image of post Day 21. 資料整理好幫手 - Collection

Day 21. 資料整理好幫手 - Collection

資源

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 的方法們

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy