Laravel Auth用户
只是删除的get()获取单个用户数据
$user = Auth:user();
dd($user);
在这种情况下的get()方法返回用户采集对象
您可以通过以下方式验证用户数据:
$user = Auth::user(); instead of using get();
Your user id is: {{ $user->id }}
Your first name is: {{ $user->first_name }}
Your last name is: {{ $user->last_name }}
虽然你的问题确实解决了答案,但它也没有给出任何解释,为什么这是这种情况(在问题中特别要求) – milo526
其他答案要么解释如何解决你的问题,但不正确的原因为什么发生这种情况。
的laravel文档状态(source):
的
get
方法返回一个Illuminate\Support\Collection
包含结果,其中每个结果是PHPStdClass
对象的实例。
从本质上讲,get
函数在此返回一个集合而不是User
对象。 QueryBuilder
上的get方法执行select语句。
通过下面的代码片段,我们可以看到什么查询得到执行。
DB::enableQueryLog();
Auth::user()->get();
dump(DB::getQueryLog());
DB::enableQueryLog();
Auth::user()->where('id', 1)->get();
dump(DB::getQueryLog());
第一个查询确实将输出预期的用户,第二个查询将抓住用户类从Auth::user()
和选择该表中的所有行。
当我们执行第3和第4个查询,我们可以看到,我们再次先取得预期的用户,第四查询但的确也得到了用户(在这种情况下,ID为1的用户)。这也是由于where
,而不是Auth::user()
。
我们可以从这些结果得出结论是,GET考虑到所有查询生成器功能,但不提供的类的参数。 如果您在对象上使用get,它只会考虑该对象的Class。
过于解决您的问题,其他的问题,正确的地方,你可以使用:
$user = Auth::user();
来获取用户。
刚刚删除' - > get();' – Onix