正确使用Laravel 4 User模型与Sentry 2包的关系

时间:2014-02-19 19:17:02

标签: php model laravel-4 relation cartalyst-sentry

我正在尝试找出如何在使用Sentry 2时返回我为User模型设置的关系。

通常,我有一个像这样检索的用户:

$user = User::find(1);

// get some relation
return $user->profile->profile_name;

但是,现在当我实施Sentry 2时,我可以像这样检索登录用户:

$user = Sentry::getUser();

这样我可以轻松访问我的数据库中的users表,但是如何获取我在User.php模型中设置的关系和方法?

这似乎是丛生的,而不是Laravel-ish:

User::find(Sentry::getUser()->id)->profile->wizard_completed;

似乎有点......倒退。

你能帮助我吗? =)

1 个答案:

答案 0 :(得分:21)

使用您的关系扩展Sentry创建您自己的用户模型:

<?php

use Cartalyst\Sentry\Users\Eloquent\User as SentryModel;

class User extends SentryModel {

    public function profile()
    {
        return hasOne(...);
    }

}

发布sentry的配置:

php artisan config:publish cartalyst/sentry

告诉Sentry使用你的模型,现在扩展Sentry的所有功能加上你的模型:

'model' => 'User',

然后你就可以:

echo Sentry::getUser()->profile->wizard_completed;