在Laravel 5中通过Auth :: User()调用用户对象时,无法访问相关的雄辩模型

时间:2015-05-14 10:58:36

标签: php laravel eloquent laravel-5

我正在完成将我的应用升级到Laravel 5的过程。我使用的是Laravel 4用户身份验证库,以及我自己的' Profile' model,用于存储用户配置文件信息,定义如下:

用户模型:

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;

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

有没有更好的方法,还是我缺少的东西?任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

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

此属性是laravel的auth驱动程序将使用的模型。默认情况下,它是model