如何使用->;附加。Laravel中受保护的$appends

如何使用->;附加。Laravel中受保护的$appends,laravel,laravel-5,Laravel,Laravel 5,如何将属性附加到模型的一个查询而不是所有查询。 我知道您可以通过添加 protected $appends = ['icon']; public function getIconAttribute(){ return Gravatar::src($this->email, 100).'&r=g&d=mm'; } 我只想为一个查询添加它 $usernames = User::where('username', 'LIKE', '%'.$request->ge

如何将属性附加到模型的一个查询而不是所有查询。 我知道您可以通过添加

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();
但这会导致调用undefined方法illumb\Database\Query\Builder::append()的错误

我能看出方法,但我觉得自己很笨 方法是
Model
的一部分,而不是
Builder
,因此必须为每个模型调用它

你可以有这样的东西:

$usernames = User::where('username', 'LIKE', '%' . $request->get('search') . '%')
    ->get()
    ->map(function ($user) {
        return $user->append('icon');
    });

=Laravel 5.4

已在5.4中引入,因此您现在可以执行以下操作:

$usernames = User::where('username', 'LIKE', '%' . $request->get('search') . '%')
    ->get()
    ->map->append('icon');

希望这有帮助

我看到了这一点,这让我觉得你可以在查询中做到吗?@whoacowboy,你当时让我充满了希望。不,那个拉取请求通常是添加了
append()
方法。这太糟糕了,但我感觉不那么愚蠢了。谢谢你的帮助@whoacowboy我刚刚试着做一个拉式请求来获取
附加
添加到集合中,但是Taylor没有。很好,很好的尝试。Laravel,一个开源ish框架。发布一个链接,我将+1它。