Illuminate\Support\Collection這個(gè)類提供了一個(gè)非常方便用于數(shù)組的方法。你可以把任何組數(shù)組的數(shù)據(jù)轉(zhuǎn)化為一個(gè)collection肉渴,也可以反向操作
Laravel Eloquent可以調(diào)取數(shù)據(jù)庫(kù)中的數(shù)據(jù),但返回的格式是一個(gè)collection實(shí)例循狰。你可以把collection的數(shù)據(jù)轉(zhuǎn)化成一個(gè)數(shù)組券勺,但是collection本身有許多的方法可以操控?cái)?shù)據(jù)。
你可以用collect()這個(gè)方法來(lái)轉(zhuǎn)化數(shù)組成為collection數(shù)據(jù)程腹,需要導(dǎo)入一數(shù)組儒拂。
1.轉(zhuǎn)化數(shù)組為一個(gè)collection實(shí)例
例如我們把一組員工數(shù)據(jù)轉(zhuǎn)化為一個(gè)collection類:
$employees = array (
0 =>
array (
'id' => '34',
'employee_name' => 'Neha',
'employee_salary' => '29054',
'employee_age' => '22',
'profile_image' => 'images/default_profile.png',
),
1 =>
array (
'id' => '35',
'employee_name' => 'Avinash',
'employee_salary' => '324050',
'employee_age' => '25',
'profile_image' => 'images/default_profile.png',
),
2 =>
array (
'id' => '36',
'employee_name' => 'Unity Butler',
'employee_salary' => '85675',
'employee_age' => '47',
'profile_image' => 'images/default_profile.png',
),
);
$emp_collection = collect($employees);
這樣我們就可以利用任何的collection方法來(lái)操控這些數(shù)據(jù)社痛。
2.用filter()方法來(lái)過濾數(shù)據(jù)(設(shè)定過濾條件)
filter方法接收一個(gè)callback,這里可以設(shè)置過濾條件:
public function filter()
{
$employees = Employee::all();
$emps = $employees->filter(function ($value, $key) {
return $value->age > 50;
});
$emps->all();
}
這里返回的是過濾過的數(shù)據(jù),也就是50歲以上的員工斩箫。
3.contains()找尋數(shù)據(jù)至collection
基于key的值凡怎,尋找符合條件的數(shù)據(jù)。
public function filter()
{
$employees = Employee::all();
$is_exist = $employees->contains('name', 'parvez');
}
如果是一個(gè)變量的話會(huì)返回一個(gè)布爾值寨典。
如果是兩個(gè)變量的話就會(huì)找這個(gè)key和value相匹配的鍵值對(duì)房匆。
4.forget()方法來(lái)移除一個(gè)特定數(shù)據(jù)
$employees = Employee::all();
$employees->forget('name', 'parvez');
5.pipe()方法用來(lái)把colletion對(duì)象轉(zhuǎn)成一個(gè)參數(shù),用于回調(diào)函數(shù)
$employees = Employee::all();
$sum_salary = $employees->pipe(function ($employees) {
return $employees->sum('salary');
});
6.pluck()方法來(lái)返回所有傳遞的參數(shù)的值
$employees = Employee::all();
$salary = $employees->pluck('salary');
});
你也可以傳入多個(gè)參數(shù)井氢。
7.random()返回隨機(jī)collection
$employees = Employee::all();
$random = $employees->random();
});
8.reverse()倒置所有元素
$employees = Employee::all();
$rev = $employees->reverse();
});
9.search()方法來(lái)搜索值返回key名稱
$employees = Employee::all();
$search = $employees->search('parvez');
});
10.chunk()分割collection
$employees = Employee::all();
$salary = $employees->chunk(4);
});
11.map()方法來(lái)遍歷每個(gè)collection并且可以修改值
$emp = $employees->map(function ($value, $key) {
$value['salary'] += 1;
return $value;
});
});
12.each()遍歷這個(gè)collection, 接收一個(gè)回調(diào)函數(shù)花竞,有兩個(gè)參數(shù)掸哑,第一個(gè)是每個(gè)collection, 第二個(gè)是key.
$employees = Employee::all();
$employees->each(function ($item, $key) {
// Do something
});
13.ToJson()方法把collection實(shí)例轉(zhuǎn)化成json數(shù)據(jù)
$employees = Employee::all();
$employees->toJson();
14. push()方法把一個(gè)數(shù)組item插入到collection的后端
$employees = Employee::all();
$newEmp = array (
'id' => '36',
'employee_name' => 'Unity Butler1',
'employee_salary' => '856751',
'employee_age' => '46',
'profile_image' => 'images/default_profile.png',
)
$employees->push($newEmp);