Связанные формы в Yii

Я пытаюсь встроить связанные поля формы в свою основную форму. Но я получаю исключение Array to string conversion. Я думаю, это потому, что я устанавливаю отношение HAS_MANY. Потому что, когда отношение HAS_ONE, форма работает правильно. Итак, как я могу получить поля из таблицы (модели) с отношением HAS_MANY. Вот отношения:

Пользовательская модель:

'address' => array(self::HAS_MANY, 'Address', 'user_id'),

Модель адреса:

'user' => array(self::BELONGS_TO, 'User', 'user_id'),

Часть формы:

<div class="row">
    <?php echo $form->labelEx($model->address,'phone'); ?>
    <?php echo $form->textField($model->address,'phone',array('size'=>60,'maxlength'=>255)); ?>
    <?php echo $form->error($model,'phone'); ?>
</div>

person Community    schedule 26.09.2014    source источник
comment
HAS_MANY возвращает многомерный массив array.ex. array(0=>array('phone'=>'xyz'));. Попробуйте использовать как $model->address[0]   -  person rajesh ujade    schedule 26.09.2014
comment
Выдает ошибку: Undefined offset: 0   -  person    schedule 26.09.2014
comment
Не могли бы вы добавить дамп массива адресов, используя рассматриваемый var_dump($model->address). Это поможет понять, что он возвращает.   -  person rajesh ujade    schedule 27.09.2014


Ответы (1)


Отношение HAS_MANY создаст массив адресов в вашей пользовательской модели.

Объявление отношения в AR включает в себя переопределение метода отношения () CActiveRecord. Метод возвращает массив конфигураций отношений. Каждый элемент массива представляет одну связь в следующем формате:

Итак, если вы хотите получить весь адрес от своего пользователя, вы используете $model->address следующим образом:

$allAddress = $model->address;
foreach($allAddress in $address){
//@address =  New Address()
//Do some stuff here with your address
}

Но если вы создаете НОВОГО пользователя и ДОБАВЛЯЕТЕ новый адрес для своего пользователя, создайте пользователя перед адресом.

$UserModel = new User();
$UserModel->attribute = $userData;
$UserModel->Save();

$AddressModel-> new Address();
$AddressModel->attribute = $addressData;
$AddressModel->user_id = $userModel->id;
$AddressModel->save();

$AddressModel2-> new Address();
$AddressModel2->attribute = $addressData2;
$AddressModel2->user_id = $userModel->id;
$AddressModel2->save();

Для получения дополнительной информации об отношениях в yii прочитайте эту статью.

Для создания формы с более чем одной Моделью см. этой статьи.

person Francisco Cabral    schedule 26.09.2014