在php artisan tinker中运行并返回true:
>>> User::first()->is('admin');
=> true
返回错误:
>>> User::where('id', 1)->is('admin');
BadMethodCallException with message 'Call to undefined method Illuminate\Database\Query\Builder\::is()'
为什么会这样?
答案 0 :(得分:3)
因为在使用->where()
构建集合时,->first()
会返回模型。
为了让eloquent返回模型,您需要通过添加->get()
然而,这也会返回一个集合。您可以使用->first()
User::where('id', 1)->first()->is('admin');
修改评论
尝试这样做,但上面的代码应该有效。
$user = User::where('id', 1)->first();
$isAdmin = $user->is('admin');
答案 1 :(得分:1)
此 User :: first()会返回用户类对象。
和 User :: where('id',1)返回雄辩的查询对象。
这就是它无法正常工作的原因。
然而 User :: where('id',1) - > get(); 将给出结果行数组。但这也无法调用is()on。
答案 2 :(得分:0)
在您的顶部示例中,您可以定义所需内容:
.wrapper {
overflow: auto;
}
然后你找回它:
User;
在您的底部示例中,您还可以定义所需内容:
first();
但是你不能在任何地方检索它。所以暂时不能 User::where('id', 1);
,因为你没有结果来进行检查。
您可以检索匹配的第一个或与匹配的所有内容的集合:
->is('admin')
答案 3 :(得分:-1)
如其他答案中所述,where()返回查询构建器,而where() - > get()返回Collection。然后,您可以返回从Collection调用的rirst()。
$user = User::where('id', 1)->get()->first();
$isAdmin = $user->is('admin');