如果我想用雄辯的,我可以做這樣的事情得到數據庫第一個用戶的名字聯繫在一起:Pluck公司與第一使用查詢生成器
$user = User::select('name')->first()->pluck('name');
// or $user = User::first()->pluck('name');
echo $user;
獲得該用戶的字符串的唯一名字。
但是如果我嘗試同樣只使用查詢生成器:
$user = DB::table('users')->select('name')->first()->pluck('name');
echo $user;
我得到異常:
調用未定義的方法stdClass的::動物內臟()
但是,如果沒有首先使用它將工作:
$user = DB::table('users')->select('name')->where('id',1)->pluck('name');
echo $user;
是不是可以使用pluck
與first
使用查詢生成器還是我做錯了什麼?
PS。當然,我知道,我可以不使用pluck
顯示使用$user->name
任何財產,但我只是好奇,爲什麼用雄辯它的工作原理和使用查詢生成器它只能不同時具有first
和pluck
謝謝,再有沒有足夠的文檔。我認爲它只是在這種情況下得到所有列並只返回一個或修改查詢(當你不使用select時),並再次只返回這個選定的列 – 2014-09-26 07:44:50
Upvoting因爲這個答案比我的好。 – lowerends 2014-09-26 07:47:25
@MarcinNabiałek感謝'__call'神奇的方法,無處不在調用Eloquent模型中的'pluck'來代表對'Eloquent \ Builder'的調用,這就是爲什麼你可以對'first'的結果做到這一點。你甚至可能不會注意到它只是運行了另一個查詢 - 在這裏就是這種情況。 – 2014-09-26 07:52:07