【问题标题】:Unable to access related eloquent models when calling the user object through Auth::User() in Laravel 5在 Laravel 5 中通过 Auth::User() 调用用户对象时无法访问相关的 eloquent 模型
【发布时间】:2015-05-14 10:58:35
【问题描述】:

我刚刚完成将我的应用程序升级到 Laravel 5 的过程。我使用 Laravel 4 用户身份验证库以及我自己的“配置文件”模型来存储用户配置文件信息,定义如下:

用户模型:

class User extends Eloquent implements AuthenticatableContract, CanResetPasswordContract {

    //...
    public function Profile()
    {
        return $this->hasOne('Profile'); 
    }
    //..

}

轮廓模型:

class Profile extends Eloquent {

   //...
   public function User()
   {
       return $this->belongsTo('User');
   }
   //...

}

以前(当应用程序是 Laravel 4 时),我可以通过 Auth 门面加载用户对象来访问登录用户的配置文件:

$user = Auth::user();
echo $user->profile->picture;

但是,自从升级到 Laravel 5 后,这一直抛出 Trying to get property of non-object 错误。

如果我直接通过用户模型加载用户对象,我可以通过用户加载配置文件,如下所示:

$user = User::findOrFail(Auth::user()->id)->first();
echo $user->profile->picture;

...但这似乎是一种冗长的做法。

有没有更好的方法,或者我缺少什么?任何帮助表示赞赏。

【问题讨论】:

  • 不确定,但根据文档,我觉得应该是 Auth::user() 而不是 Auth::User()
  • 我写这篇文章的错误——我实际上是在使用Auth::user();

标签: php laravel eloquent laravel-5


【解决方案1】:

如果是我认为的那样,那么您可能需要将config/auth.phpmodel 选项更新为您的用户模型的类名。

该属性是 laravel 的 auth 驱动程序将使用的模型。默认为App\User

【讨论】:

  • 好发现!我将其更改为'model' => 'User',,它又可以正常工作了。我想我将不得不让我的命名空间设置更符合 Laravel 的工作方式。感谢您的帮助。
猜你喜欢
  • 2018-11-06
  • 1970-01-01
  • 2017-12-31
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 2014-04-02
  • 2017-08-24
  • 2020-05-29
相关资源
最近更新 更多