Laravel 5使用来自其他数据库表的信息扩展auth :: user()

时间:2015-09-03 13:20:17

标签: php authentication laravel-5 eloquent relationship

我正在使用Auth::user()获取有关当前登录用户的信息。现在我想扩展Auth::user()提供的信息。具体的用户的激活状态应该可用。

此信息存储在列中的表激活中。

根据我的理解Auth::user()提供将从用户模型中恢复的内容。所以我应该在表用户和表激活之间建立关系。 documentation状态2 posibilites都要求激活表有一个foreign_key user_id

我的表格布局没有涵盖这一点,我只是在用户表中引用 actvtion_id

是否有可能与我的表格布局建立关系,这导致了期望的结果,Auth::user()提供了激活状态?如果我该怎么办?

或者我是否必须按照文档中的建议切换表格布局?

在我的表格代码下面:

控制器

class ProfileController extends Controller {

    public function me()
    {
        return Auth::user(  );
    }
}

用户(迁移)

    Schema::create('users', function(Blueprint $table)
    {
        $table->increments('id');
        $table->string('email')->unique();
        $table->integer('activation_id')->unsigned(); 
        $table->foreign('activation_id')->references( 'id' )->on( 'activations' );
        //...
        $table->timestamps();
    });

激活(迁移)

    Schema::create('activations', function(Blueprint $table)
    {
        $table->increments('id');   
        $table->string('activationStatus', 1)->nullable()->default('N');
        // ...
        $table->timestamps();
    });

1 个答案:

答案 0 :(得分:0)

首先,您需要在用户模型中定义模型关系:

public function activation()
{
    return $this->belongsTo('App\Activations', 'activation_id');
}

现在,您可以轻松地从经过身份验证的用户延迟加载激活关系:

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

如果您想获得激活状态,您现在可以:

var_dump($user->activation->activationStatus); // Prints 'Y' / 'N'