2016-10-31 97 views
0

如何將屬性追加到一個查詢中,但不是模型的所有查詢。 我知道你可以通過添加

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

回答

2

append()功能是Model的一部分,而不是Builder,所以你必須爲每個模型調用它。

你可能有這樣的事情:

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

希望這有助於!

+0

我看到這個[拉請求](https://github.com/laravel/framework/pull/9798),這讓我覺得你可以在查詢中做到這一點? – whoacowboy

+0

@whoacowboy那時你已經得到了我的希望。不,那個pull請求一般是添加'append()'方法。 –

+0

這太糟糕了,但我感覺不那麼愚蠢。謝謝你的幫助! – whoacowboy