2014-09-26 3 views
1

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

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

'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> 
+0

HAS_MANY возвращает многомерный массив.ex. 'Массив (0 => массив ('телефон' => 'XYZ'));'. Попробуйте использовать как '$ model-> address [0]' –

+0

Выводит сообщение об ошибке: 'Undefined offset: 0' – 2014-09-26 14:06:00

+0

Можете ли вы добавить дамп массива адресов, используя' var_dump ($ model-> address) 'в вопросе. Это поможет понять, что он возвращает. –

ответ

1

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

Declaring relationship in AR involves overriding the relations() method of CActiveRecord. The method returns an array of relationship configurations. Each array element represents a single relationship with the following format:

Итак, если вы хотите, чтобы все адреса от вашего пользователя, вы используете $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, читайте this article.

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

Смежные вопросы