比方说,你有一个照亮收集的User
模型对象。
$users = User::all();
现在,您想通过ID从该集合中获取单个用户。
我知道这样做的唯一方法(非常丑陋):
$user_id = 22;
$user = $users->filter(function($user) use ($user_id) {
return $user->id = $user_id;
})->first();
(摘自该问答)。
但是,如果执行此操作,则$users
集合将被破坏且无法使用。例如,如果以前在集合中有100个唯一用户,则22
出于某些上帝遗弃的原因,您现在将拥有该ID的用户的100个副本。
如何通过ID从集合中获取单个用户,而又不破坏集合或对其进行遍历?
我以为这样可以
$user_id = 22;
$temp_users = $users;
$user = $temp_users->filter(function($user) use ($user_id) {
return $user->id = $user_id;
})->first();
但是,更令人生气的$users
是,仍然被filter调用破坏了-显然与之$temp_users = $users
相同$temp_users = &$users
。似乎没有办法复制馆藏。
根据这个Github问题,Collection :: filter()用于返回全新的对象实例。显然,它不再存在。而且$temp_users = $users;
我也猜不到-这真是令人困惑。
集合形式的口才回应实际上扩展了位于的特殊集合类型Illuminate\Database\Eloquent\Collection
,它具有一种熟悉的方法find()
。只需使用它。
$users = User::all();
$jack = $users->find(22);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句