从Yii中的ID获取模型

时间:2017-06-26 12:57:47

标签: php yii yii2

我想更改yii2应用历史记录视图中显示的内容,以便我不会显示某个人的ID,但他的名字和姓氏。

这是我数据网格的一部分

        [
                'attribute' => 'oldPerson.Id',
                'label' => Yii::t('app', 'Previously In Charge'), 
                'value' => function($model){                   
                    return $model->person->FirstName . ' ' . $model->person->LastName; }              
        ],

但这并不好,因为我的$model是一个历史对象,其中包含一个人的ID。我不知何故需要根据该ID获取整个 person 对象,但我不知道如何。

这是我的 Person 模型:

namespace app\models;

use Yii;
use \app\models\base\Person as BasePerson;

/**
 * This is the model class for table "person".
 */
class Person extends BasePerson
{
public $created_at;
public $created_by;
public $updated_at;
public $updated_by;
public $id;
    /**
     * @inheritdoc
     */
    public function rules()
    {
        return array_replace_recursive(parent::rules(),
        [
            [['FirstName', 'LastName', 'Title', 'CitizenNumber', 'Employment', 'Contact'], 'required'],
            [['FirstName'], 'string', 'max' => 20],
            [['LastName'], 'string', 'max' => 40],
            [['Title'], 'string', 'max' => 50],
            [['CitizenNumber'], 'string', 'max' => 13],
            [['Employment', 'Contact'], 'string', 'max' => 100],
            [['CitizenNumber'], 'unique']
        ]);
    }
}

2 个答案:

答案 0 :(得分:1)

通常你可以通过这种方式获得基于id的模型

public function findModel($id)
{
    if (($model = Person ::findOne($id)) !== null) {
        return $model;
    } else {
        throw new NotFoundHttpException('The requested page does not exist.');
    }
}

$ model包含与$ id

相关的Person信息

答案 1 :(得分:0)

它也工作正常

$model=Modelname::findOne($id);