2012-07-04 3 views
1

온라인 샵을 만들고 있습니다. 두 가지 모델이 있습니다 : ProductCategory. Product은 하나의 카테고리를 가질 수 있지만 카테고리는 많은 제품을 가질 수 있습니다.관계에서 데이터 추출

models에 관계를 정의했습니다. 카테고리와 제품에 액세스 할 수 있습니다. 하지만 특정 범주의 모든 제품을 얻고 싶습니다. 공식 문서에서 "게으른" "열심히"접근하는 많은 관계형 쿼리 예제를 시도했지만 성공하지는 못했습니다. 그것을 구현하는 방법을 설명해 주시겠습니까?

카테고리 컨트롤러 :

public function relations() 
{ 
    return array(
     'products' => array(self::HAS_MANY, 'Product', 'category_id'), 
    ); 
} 

제품 컨트롤러 :

public function relations() 
{ 
    return array(
     'category' => array(self::BELONGS_TO, 'Category', 'category_id'), 
    ); 
} 

감사합니다

여기 내 코드입니다.

+0

일부 변경 사항을 적용하여 생각한 방식으로 배치했으며 다른 사람에게 도움을 줄 수있는 답변으로 표시 할 수 있습니다. –

답변

1

당신은이 배열을 반환하고 foreach 루프를 사용할 수 있습니다 당신은

CVarDumper::Dump($the_category->products->name,100,true); 

에 의해 debugging purposes에 대한 내용을 볼 수 있습니다 당신은

$the_category->products->name 

같은 필드에 액세스 할 수 있습니다

Category::model()->with('products')->findByPk(1); 

을 수행 할 수 있습니다 각각에 액세스하려면 index

$products = $the_category->products; 
foreach ($products as $the_product) 
{ 
    echo "Name: " . $the_product['name'] . "<br />"; 
}