Я пытаюсь получить информацию из двух моделей, связанных, отображаемых в одном представлении.Две модели, отображающие одинаковый вид в 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, я хочу для отображения атрибутов (это будут значения по умолчанию) этого конкретного лица, где идентификатор человека совпадает с идентификатором person_id в таблице атрибутов
После этого пользователь сможет обновить атрибуты, относящиеся к этому лицу ,
С уважением.
Использование атрибутов для имени отношения невозможно, и связанный учебник устарел, официальный документ лучше http://www.yiiframework.com/doc-2.0/guide-output-data-widgets.html#working -with-model-relations – soju
Спасибо. Я обновлю свой ответ –