0%

PHP Laravel 系列 - (12) Collection

1. 簡介

collection提供一個流暢、便利的封裝來操控陣列資料,比原本的array提供更多功能,

相關可用的方法可以參考台灣官網,記得只有Laravel才有哦。

有些第三方的套件使用的方法還是array 型別,所以千萬別覺得array就不重要了

2. 動手改寫getData()

原本我們的getData() array object to collection object

2.1. Code

1
2
3
4
5
6
7
8
9
10
11
12
13
public function getData()
{
return [
[
'title' => 'A',
'content' => 'aaa',
],
[
'title' => 'B',
'content' => 'bbb',
]
];
}

改寫成

1
2
3
4
5
6
7
8
9
10
11
12
13
public function getData()
{
return collect([
collect([
'title' => 'A',
'content' => 'aaa',
]),
collect([
'title' => 'B',
'content' => 'bbb',
])
]);
}

順便把index()改一下,讓我們來觀查狀況

1
2
3
4
public function index(Request $request)
{
dump($this->getData());
}

2.2. Result

我們再啟用服務之後,瀏覽

1
http://127.0.0.1:8000/products

改前

image-20211017195023070

改後

image-20211017194944275

3. 動手改寫store()

1
2
3
4
5
6
7
public function store(Request $request)
{
$data = $this->getData();
$newData = $request->all();
array_push($data,$newData);//原生php array_push 方法
return response($data);
}
1
2
3
4
5
6
7
8
public function store(Request $request)
{
$data = $this->getData();
$newData = $request->all();
$data->push($newData);//改寫
dump($data);
return response($data);
}

image-20211017200729624

我們可以看到在最後一個的型別還是array,所以我們可以再這邊改寫一下

1
2
3
4
5
6
7
8
public function store(Request $request)
{
$data = $this->getData();
$newData = $request->all();
$data->push(collect($newData));
dump($data);
return response($data);
}

image-20211017200937848