laravel Auth :: user() - >返回所有不仅仅是经过身份验证的用户

时间:2016-10-17 09:46:58

标签: php laravel laravel-5

错误:这会将所有用户与其人员一起返回:

$me = Auth::user()->with('persons')->get();

正确:这只返回经过身份验证的用户及其人员

Auth::user()->persons()->get()

模型

 public function persons(){
        return $this->hasMany('App\Person', 'user_id');
    }

区别在哪里?为什么第一行返回所有用户?

感谢

2 个答案:

答案 0 :(得分:1)

在查询构建器中使用->with()eager load关系,因此它会加载相关模型。 返回相关模型,只有 加载

这里要注意的一件有趣的事情是auth() - > user(),返回User模型实例。因此,在使用->with('persons')->get()进行链接时,您实际上是在创建一个新的查询生成器。

$user = auth()->user();
// The following line creates new Query for User model
$allUsersWithPersons = $user->with('persons')->get();
// same as following line
$allUsersWithPersons2 = User::with('persons')->get();

答案 1 :(得分:1)

应该在Model实例上的with对象上调用

Builder

在第一个示例中,您在User实例上调用它,就像调用:

User::with('persons')->get();

所以Laravel将所有用户及其人员一起返回

请注意,如果要在单个模型上加载关系,可以执行以下操作:

$me = Auth::user();
$me->load('persons');