W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
所有 Eloquent 查詢返回的數(shù)據(jù),如果結(jié)果多于一條,不管是經(jīng)由 get 方法或是 relationship,都會(huì)轉(zhuǎn)換成集合對(duì)象返回。這個(gè)對(duì)象實(shí)現(xiàn)了 IteratorAggregate PHP 接口,所以可以像數(shù)組一般進(jìn)行遍歷。而集合對(duì)象本身還擁有很多有用的方法可以操作模型數(shù)據(jù)。
確認(rèn)集合中里是否包含特定鍵值
例如,我們可以使用 contains 方法,確認(rèn)結(jié)果數(shù)據(jù)中,是否包含主鍵為特定值的對(duì)象。
$roles = User::find(1)->roles;
if ($roles->contains(2))
{
//
}
集合也可以轉(zhuǎn)換成數(shù)組或 JSON:
$roles = User::find(1)->roles->toArray();
$roles = User::find(1)->roles->toJson();
如果集合被轉(zhuǎn)換成字符串類型,會(huì)返回 JSON 格式:
$roles = (string) User::find(1)->roles;
Eloquent 集合里包含了一些有用的方法可以進(jìn)行循環(huán)或是進(jìn)行過濾:
$roles = $user->roles->each(function($role)
{
//
});
過濾集合時(shí),回調(diào)函數(shù)的使用方式和 array_filter 里一樣。
$users = $users->filter(function($user)
{
return $user->isAdmin();
});
注意: 如果要在過濾集合之后轉(zhuǎn)成 JSON,轉(zhuǎn)換之前先調(diào)用 values 方法重設(shè)數(shù)組的鍵值。
遍歷傳入集合里的每個(gè)對(duì)象到回調(diào)函數(shù)
$roles = User::find(1)->roles;
$roles->each(function($role)
{
//
});
$roles = $roles->sortBy(function($role)
{
return $role->created_at;
});
$roles = $roles->sortBy('created_at');
有時(shí)您可能想要返回自定義的集合對(duì)象,讓您可以在集合類里加入想要的方法??梢栽?Eloquent 模型類里重寫 newCollection 方法:
class User extends Model {
public function newCollection(array $models = [])
{
return new CustomCollection($models);
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: