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

Mar*_*rty 4 php model relation laravel-4 cartalyst-sentry

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

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

$user = User::find(1);

// get some relation
return $user->profile->profile_name;
Run Code Online (Sandbox Code Playgroud)

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

$user = Sentry::getUser();
Run Code Online (Sandbox Code Playgroud)

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

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

User::find(Sentry::getUser()->id)->profile->wizard_completed;
Run Code Online (Sandbox Code Playgroud)

看起来有些......倒退了.

你能帮助我吗?=)

Ant*_*iro 21

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

<?php

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

class User extends SentryModel {

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

}
Run Code Online (Sandbox Code Playgroud)

发布sentry的配置:

php artisan config:publish cartalyst/sentry
Run Code Online (Sandbox Code Playgroud)

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

'model' => 'User',
Run Code Online (Sandbox Code Playgroud)

那么你将能够:

echo Sentry::getUser()->profile->wizard_completed;
Run Code Online (Sandbox Code Playgroud)

  • 如果你正在扩展('class User extends SentryModel')他们自己的模型,它怎么会失去任何东西?它将拥有Sentry的所有功能和你的功能. (2认同)