我試圖從兩個相關的模型中獲取信息,顯示在一個視圖中。在Yii2中顯示相同視圖的兩個模型
因此,我試圖完成的是有索引視圖來顯示人員列表,如果我然後詳細查看該特定人員,我想要一個與該人員相關的屬性列表出現。
我有數據庫設置,所以當我創建一個新人時,一個默認行被插入屬性表中,該人員的名字叫person_id。
見我的兩個模型類
人:
class People extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'people';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['dob', 'CURDATE'], 'safe'],
[['age'], 'integer'],
[['firstname', 'surname'], 'string', 'max' => 50]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'firstname' => 'Firstname',
'surname' => 'Surname',
'dob' => 'Dob',
'age' => 'Age',
'CURDATE' => 'Curdate',
];
}
/**
* @return \yii\db\ActiveQuery
*/
public function getId0()
{
return $this->hasOne(Attributes::className(), ['person_id' => 'id']);
}
}
屬性:
class Attributes extends \yii\db\ActiveRecord
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'attributes';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['haircolor', 'eyecolor', 'weight', 'height', 'person_id'], 'required'],
[['weight', 'height', 'person_id'], 'integer'],
[['haircolor', 'eyecolor'], 'string', 'max' => 50]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => 'ID',
'haircolor' => 'Haircolor',
'eyecolor' => 'Eyecolor',
'weight' => 'Weight',
'height' => 'Height',
'person_id' => 'Person ID',
];
}
/**
* @return \yii\db\ActiveQuery
*/
public function getPeople()
{
return $this->hasOne(People::className(), ['id' => 'person_id']);
}
}
我已經爲這兩個模型的生成CRUD通過GII。
我想知道的是如何設置我的人員控制器和人員查看,以便這可以正常工作。
回想一下,我的index.php視圖將只顯示人員列表,如果存在記錄,您可以查看該特定記錄,如果您查看記錄 - 這將是view.php文件,我想以顯示該特定人的屬性(這些將是默認值),其中該人的ID與屬性表中的person_id相同
然後用戶將能夠更新與該人有關的屬性。
親切的問候。
使用'屬性'作爲關係名是不可能的,並且鏈接教程已過時,官方文檔更好http://www.yiiframework.com/doc-2.0/guide-output-data-widgets.html#working -with-model-relations – soju 2015-03-19 14:31:24
謝謝。我會更新我的答案 – 2015-03-19 14:33:38