2014-09-26 2 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는 다차원 array.ex를 반환합니다. 'array (0 => array ('phone'=> 'xyz'));'. '$ model-> address [0]'처럼 사용하려고 시도하십시오. –

+0

오류를 표시하십시오 :'정의되지 않은 오프셋 : 0' –

+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을보십시오.