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'
我正在使用 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'