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

Laravel 5 extend auth::user() with information from other database table

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

此信息存储在 state 列的 table activations 中。

根据我的理解,Auth::user() 提供将从 用户模型 中检索的内容。所以我应该在 table users 和 table activations 之间建立关系。 documentation 陈述了 2 个可能性,都要求 activations table 有一个 foreign_key user_id.

我的 table 布局不包括这些,我只是在 users table 中参考了 actvtion_id

是否有可能与我的 table 布局建立关系,从而达到预期的结果,即 Auth::user() 为我提供 激活状态 ?如果应该怎么办?

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

在我的 table 代码下方:

控制器

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();
    });

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

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

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

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

如果您想获取激活状态,您现在可以这样做:

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