Laravel Auth用户

时间:2017-05-06 09:17:05

标签: laravel laravel-5.2

在我的控制器中我正在做

$user = Auth:user()->get();
dd($user);

这是我的数据库中所有用户的列表。 为什么呢?

5 个答案:

答案 0 :(得分:3)

其他答案要么解释如何解决问题,要么解释为什么会发生这种情况。

laravel文档说明(source):

  

get方法返回一个Illuminate\Support\Collection,其中包含结果,其中每个结果都是PHP StdClass对象的一个​​实例。

找到here的完整文档,API参考here

本质上,get函数返回一个集合而不是User对象。 QueryBuilder上的get方法执行select语句。

使用以下代码段,我们可以看到执行了哪些查询。

DB::enableQueryLog();
Auth::user()->get();
dump(DB::getQueryLog());

这将输出:Only get output

DB::enableQueryLog();
Auth::user()->where('id', 1)->get();
dump(DB::getQueryLog());

这将输出:Get with where output

第一个查询确实会输出预期的用户,第二个查询将从Auth::user()中获取用户类,并从该表中选择所有行。

当我们执行第3和第4个查询时,我们可以看到我们再一次获得预期的用户,但是第4个查询也会获得用户(在这种情况下是id为1的用户)。这也是where而不是Auth::user()

我们可以从这些结果中得出结论,get将考虑所有查询构建器函数,但不考虑所提供类的参数。 如果你使用get on a object,它只会考虑该Object的Class。

为了解决您的问题,其他问题在哪里正确并且您可以使用:

$user = Auth::user();

获取用户。

答案 1 :(得分:0)

因为获得回归收集

Laravel Doc

答案 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()