Yii2如何创建一个全局可访问的变量来转换用户';s id为员工';身份证

Yii2如何创建一个全局可访问的变量来转换用户';s id为员工';身份证,yii2,global-variables,yii2-advanced-app,Yii2,Global Variables,Yii2 Advanced App,我有两个表,它们以一对一的关系直接相关。一个是标准的Yii2用户表(为清楚起见,此处缩写字段列表),另一个是包含用户id的employee表。如何创建全局可访问变量(以及访问员工id的实际代码)我可以在我的应用程序中的任何地方使用它,它将为我提供登录用户的员工id,我将如何调用该变量?我希望我可以说,我已经尝试了一些东西,但不幸的是,我对Yii2比较陌生,不知道从哪里开始使用这样的全局变量。谢谢你的帮助 用户表: id 用户名 密码 等 员工表: id 用户id(与用户表以一对一的关系关联) 员

我有两个表,它们以一对一的关系直接相关。一个是标准的Yii2用户表(为清楚起见,此处缩写字段列表),另一个是包含用户id的employee表。如何创建全局可访问变量(以及访问员工id的实际代码)我可以在我的应用程序中的任何地方使用它,它将为我提供登录用户的员工id,我将如何调用该变量?我希望我可以说,我已经尝试了一些东西,但不幸的是,我对Yii2比较陌生,不知道从哪里开始使用这样的全局变量。谢谢你的帮助

用户表:
id
用户名
密码

员工表:
id
用户id(与用户表以一对一的关系关联)

员工模式:

<?php

namespace frontend\models\base;

use Yii;

/**
 * This is the base model class for table "employee".
 *
 * @property integer $id
 * @property integer $user_id

 *
 * @property \common\models\User $user
 */
 class Employee extends \yii\db\ActiveRecord
{
public function rules()
{
    return [
        [['user_id', 'required'],
        [['user_id'], 'integer'],
        [['user_id'], 'unique']
    ];
}

public static function tableName()
{
    return 'employee';
}

public function attributeLabels()
{
    return [
        'id' => Yii::t('app', 'ID'),
        'user_id' => Yii::t('app', 'User ID'),
    ];
}

/**
 * @return \yii\db\ActiveQuery
 */
public function getUser()
{
    return $this->hasOne(\common\models\User::className(), ['id' => 'user_id']);
}
}

一个非常简单的方法是使用$param数组

您可以在中初始配置默认值

your_App\config\param.php  
以及使用

\Yii::$app->params['your_param_key']
看看您的员工模型(对我来说),您不需要全局变量,只需使用getUser即可

  $myUser = Employee::user();
但是您需要可以使用指定的参数

  \Yii::$app->params['my_user'] = Employee::user();
或在用户中

  \Yii::$app->params['my_user'] =  Yii::$app->user->id
或者从表中检索与实际用户相关的模型

$myEmpModel  =  Employee::find()->where['user_id' =>  Yii::$app->user->id]->one(); 

一种非常简单的方法是使用$param数组

您可以在中初始配置默认值

your_App\config\param.php  
以及使用

\Yii::$app->params['your_param_key']
看看您的员工模型(对我来说),您不需要全局变量,只需使用getUser即可

  $myUser = Employee::user();
但是您需要可以使用指定的参数

  \Yii::$app->params['my_user'] = Employee::user();
或在用户中

  \Yii::$app->params['my_user'] =  Yii::$app->user->id
或者从表中检索与实际用户相关的模型

$myEmpModel  =  Employee::find()->where['user_id' =>  Yii::$app->user->id]->one(); 

我认为正确的方法是在
用户
模型中使用关系。第一个方法是与activerecord的正确关系,第二个方法将使用上面定义的关系获取id。因此,您将在用户模型中添加以下方法:

/**
 * @return \yii\db\ActiveQuery
 */
public function getEmployee()
{
    return $this->hasOne(Employee::className(), ['user_id' => 'id']);
}

public function getEmployeeId()
{
    return $this->employee ? $this->employee->id : NULL; // set to NULL or anything you expect to be if record is not found
}
然后,您可以在应用程序中的任何地方这样称呼它:

$employee_id = Yii::$app->user->identity->employeeid;
这只适用于用户模型,因为它实现了标识,否则您需要首先实例化模型类,比如:

$user_id = 5; // 5 is id of user record in DB
$user = User::findOne($user_id);
$employee_id = $user->employeeid;
// or using first of 2 relations ...
$employee_id = $user->employee->id;

我认为正确的方法是在
用户
模型中使用关系。第一个方法是与activerecord的正确关系,第二个方法将使用上面定义的关系获取id。因此,您将在用户模型中添加以下方法:

/**
 * @return \yii\db\ActiveQuery
 */
public function getEmployee()
{
    return $this->hasOne(Employee::className(), ['user_id' => 'id']);
}

public function getEmployeeId()
{
    return $this->employee ? $this->employee->id : NULL; // set to NULL or anything you expect to be if record is not found
}
然后,您可以在应用程序中的任何地方这样称呼它:

$employee_id = Yii::$app->user->identity->employeeid;
这只适用于用户模型,因为它实现了标识,否则您需要首先实例化模型类,比如:

$user_id = 5; // 5 is id of user record in DB
$user = User::findOne($user_id);
$employee_id = $user->employeeid;
// or using first of 2 relations ...
$employee_id = $user->employee->id;

非常感谢。但是,从登录用户访问员工id的代码是什么样子的?更新您的问题并添加。。员工模型请发布我假设的是您需要的员工模型的一部分(删除了所有与其他功能无关的代码)。如果你需要更多,请告诉我。该问题之前已更新,包括对代码请求的澄清。谢谢你的帮助。谢谢,但是我想你的代码会返回正确的用户id吗?我需要当前登录用户的雇员id(来自雇员表)。也许我误解了。谢谢!我想那很管用。基于这个假设,我会接受你的回答。很抱歉,我没有足够的代表(还需要三位)来支持你的回答。我希望我能给你10票赞成。节日快乐,谢谢!但是,从登录用户访问员工id的代码是什么样子的?更新您的问题并添加。。员工模型请发布我假设的是您需要的员工模型的一部分(删除了所有与其他功能无关的代码)。如果你需要更多,请告诉我。该问题之前已更新,包括对代码请求的澄清。谢谢你的帮助。谢谢,但是我想你的代码会返回正确的用户id吗?我需要当前登录用户的雇员id(来自雇员表)。也许我误解了。谢谢!我想那很管用。基于这个假设,我会接受你的回答。很抱歉,我没有足够的代表(还需要三位)来支持你的回答。我希望我能给你10票赞成。节日快乐。这个建议优雅、简单,对我来说非常有效。谢谢。这个建议很优雅,简单,对我来说很有效。非常感谢。