如何将属性附加到一个查询,但不是所有模型的查询.我知道你可以通过添加为模型中的所有查询添加属性
protected $appends = ['icon'];
public function getIconAttribute(){
return Gravatar::src($this->email, 100).'&r=g&d=mm';
}
Run Code Online (Sandbox Code Playgroud)
我想只为一个查询添加它
$usernames = User::where('username', 'LIKE', '%'.$request->get('search').'%')
->append('icon')->get();
Run Code Online (Sandbox Code Playgroud)
但这给出了错误 Call to undefined method Illuminate\Database\Query\Builder::append()
我可以看到方法,但感觉很愚蠢 https://laravel.com/api/5.3/Illuminate/Database/Eloquent/Model.html#method_append
该append()方法是一部分,Model而不是Builder必须为每个模型调用它.
你可以有类似的东西:
$usernames = User::where('username', 'LIKE', '%' . $request->get('search') . '%')
->get()
->map(function ($user) {
return $user->append('icon');
});
Run Code Online (Sandbox Code Playgroud)
> = Laravel 5.4
5.4中引入了高阶消息传递,因此您现在可以执行以下操作:
$usernames = User::where('username', 'LIKE', '%' . $request->get('search') . '%')
->get()
->map->append('icon');
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1474 次 |
| 最近记录: |