Я пытаюсь встроить связанные поля формы в основную форму. Но я получаю исключение 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>
Отношение 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, прочитайте Эта статья.
Для создания формы с более чем одной моделью, посмотрите Эта статья.
Других решений пока нет …