如果我想用雄辩的,我可以做这样的事情得到数据库第一个用户的名字联系在一起: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