Как отобразить данные из связанной таблицы в форме редактирования?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Myst
Сообщения: 32
Зарегистрирован: 2016.01.22, 15:06

Как отобразить данные из связанной таблицы в форме редактирования?

Сообщение Myst »

Имеется:

  • таблица User с полями id (id юзера) и org (id организации из табл Org), модель User;
  • таблица Org с полями id (id организации), name (название организации), модель Org;
  • в модели User настроена связь (сделано через gii):

    Код: Выделить всё

     
        public function getOrg0()
        {
            return $this->hasOne(Org::className(), ['id' => 'org']);
        }
    
  • форма для редактирования записи таблицы User: ( app/modules/users/views/user/_form.php) в которой есть строка для редактирования поля

    Код: Выделить всё

    /* @var $model app\modules\users\models\User */
    .....
    <?= $form->field($model, 'org0.name')->textInput() ?>


На выходе ошибка:
Getting unknown property: app\modules\users\models\User::org0.name
Если пишем так

Код: Выделить всё

<?= $form->field($model, 'org')->textInput() ?>
то на выходе id организации из таблицы User.
Как правильно написать строку чтобы на выходе было название организации из таблицы Org?
scarj
Сообщения: 4
Зарегистрирован: 2017.11.01, 11:47

Re: Как отобразить данные из связанной таблицы в форме редактирования?

Сообщение scarj »

andrei.obuhovski писал(а): 2016.02.05, 12:03 <?= $form->field($model->org0, 'name')->textInput() ?>
А что если в связанной таблице нет данных, т.е. приходит пустая модель связанной таблицы, а форму отобразить нужно, так как пользователь может что нибудь выбрать (dropDownList) или написать (textInput) ?
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как отобразить данные из связанной таблицы в форме редактирования?

Сообщение andku83 »

Код: Выделить всё

<?php $relation = $model->relation ?: new RelationModel(); ?> 
...
<?= $form->field($relation, 'name')->textInput() ?>
Ответить