在我的控制器中我正在做
$user = Auth:user()->get();
dd($user);
这是我的数据库中所有用户的列表。 为什么呢?
答案 0 :(得分:3)
其他答案要么解释如何解决问题,要么解释为什么会发生这种情况。
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个查询时,我们可以看到我们再一次获得预期的用户,但是第4个查询也会获得用户(在这种情况下是id为1的用户)。这也是where
而不是Auth::user()
。
我们可以从这些结果中得出结论,get将考虑所有查询构建器函数,但不考虑所提供类的参数。 如果你使用get on a object,它只会考虑该Object的Class。
为了解决您的问题,其他问题在哪里正确并且您可以使用:
$user = Auth::user();
获取用户。
答案 1 :(得分:0)
因为获得回归收集
答案 2 :(得分:0)
只需移除 get()即可获取单个用户数据
$user = Auth:user();
dd($user);
在这种情况下 get()方法返回用户集合对象
答案 3 :(得分:0)
您可以通过以下方式验证用户数据:
$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 }}
答案 4 :(得分:0)
返回用户:: where('id',auth()-> id())-> with(['something'])-> first()