如何将属性附加到一个查询,但不是所有模型的查询。 我知道您可以通过添加
为模型中的所有查询添加属性protected $appends = ['icon'];
public function getIconAttribute(){
return Gravatar::src($this->email, 100).'&r=g&d=mm';
}
我想只为一个查询添加
$usernames = User::where('username', 'LIKE', '%'.$request->get('search').'%')
->append('icon')->get();
但是会出现错误Call to undefined method Illuminate\Database\Query\Builder::append()
我可以看到方法,但感觉很愚蠢 https://laravel.com/api/5.3/Illuminate/Database/Eloquent/Model.html#method_append
答案 0 :(得分:6)
append()
方法是Model
的一部分,而不是Builder
,因此您必须为每个模型调用它。
你可以拥有类似的东西:
$usernames = User::where('username', 'LIKE', '%' . $request->get('search') . '%')
->get()
->map(function ($user) {
return $user->append('icon');
});
> = Laravel 5.4
5.4中引入了Higher Order Messaging,现在您可以这样做:
$usernames = User::where('username', 'LIKE', '%' . $request->get('search') . '%')
->get()
->map->append('icon');
希望这有帮助!