如何使用 - >附加v.protected $附加在Laravel中

who*_*boy 1 laravel laravel-5

如何将属性附加到一个查询,但不是所有模型的查询.我知道你可以通过添加为模型中的所有查询添加属性

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

Rwd*_*Rwd 7

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)

希望这可以帮助!