2013-04-16 2 views
0

Yii 님에게 새로운 내용이며 AR 관계 설정에 문제가 있습니다. Rails Active Record를 가지고 있지만 Yii에서 간단한 관계를 설정할 수 없습니다.Yii - 활발한 기록 관계 Has_Many 문제

사례는 Business와 BusinessDescription의 두 모델 사이에 있으며, 여기에서 1 개의 Business는 N 개의 BusinessDescriptions를 가질 수 있습니다.

Im는 MyIsam Engine과 함께 MySQL을 사용하고 business_id라는 BusinessDescription에서 FK를 선언했습니다.

비즈니스 관계 :

public function relations() 
{ 
    return array(
       'businessdescription' => array(self::HAS_MANY, 'businessdescription', 'business_id'), 
    ); 
} 

BusinessDescriptions 관계 :이 역시 나에게 Property "Business.description" is not defined.을 제공

$business= Business::model()->findByPk(1); 
$b_desc = $business->description; 
$test_relation = $business->businessdescription; 

: 내 색인 작업에서 내 웹 사이트의 컨트롤러에서

public function relations() 
    { 
     return array(
        'business' => array(self::BELONGS_TO, 'business', 'business_id'), 
     ); 
    } 

나는 다음을 수행하고 또는와 같은 비즈니스 모델에서 선언하면내가 var * dump * 할 때 null을 반환합니다.

나는 assossiation에서 기록을 가져오고 싶습니다.

의견을 보내 주셔서 감사합니다.

답변

0

HAS_MANY 관계, 그것은, 예를 들어, 배열을 반환합니다 :

foreach ($business->businessdescription as $bdesc) 
{ 
    echo $bdesc->description; 
} 

PS : MYISAM는 FK를 지원하지 않습니다, 당신은 이노

+0

네, 사실 그것은 MyIsam 문제였습니다. (필자는 '$ business-> businessdescription-> description', Rails 스타일과 같은 것을 시도하고 있음을 인정하지만, findByPk를 수행하면 이렇게해야 할 것 같습니다. :'$ business-> businessdescription [0] -> description'. 귀하의 의견과 MyIsam 설명을 보내 주셔서 감사합니다. – Silver

1

은 수정 : 이

foreach($model as $val){ 
echo $val->attribute; 
} 

을 사용하여 다음과 같이 배열을 반환해야합니다 businessdescription 이후

$business= Business::model()->findByPk(1); 
$b_desc = $business->businessdescription->description; 
+0

Weidly를 사용한다, 이것은 내 놓는다 "비 개체의 속성을 얻으려고 노력". 이견있는 사람? – Silver