2013-10-03 1 views
0

안녕하세요, 저는 제품 및 카테고리를 링크하기 위해 링크 테이블을 사용하는 데이터베이스가 있습니다.Yii의 관계를 사용하여 데이터 가져 오기 PHP

관계는 다음과 같다 :

Product  ProductCategories  Category 
Id   Id      Id 
Name   ProductId    Name 
      CategoryId 

그래서 productCategory 테이블 카테고리

에 제품을 연결

내 문제는 메신저의 ID로 범주에있는 모든 제품을 발견 할 때 1

이 코드를 사용하지만 작동하지 않는 것 같습니다 :

$models = Products::model()->with('productcategories')->findByPk(1); 

이것은 제품 관계입니다 :

public function relations() 
{ 
    return array(
     'productcategories' => array(self::HAS_MANY, 'Productcategories', 'ProductId'), 
    ); 
} 
+0

어떻게 관계는 모델에 정의? –

+0

@MarkWinterbottom 필자의 질문이 업데이트되었습니다. –

+0

작동하지 않는 기능은 무엇입니까? 아무것도 반환하지 않습니까? –

답변

2
public function relations() 
{ 
    return array(
     'productcategories' => array(self::HAS_MANY, 'Productcategories', 'ProductId'), 
     'Categories' => array(self::HAS_MANY, 'Category', '', 
      'through'=>'productcategories', 
      'on' => 'Categories.Id = productcategories.CategoryId', 
     ), 
    ); 
} 

// Get all Product with a Category with id = 1 
$models = Products::model()->with('Categories')->findAll('Categories.Id = 1'); 
+0

감사합니다. 그러나 나는 카테고리 관계를 필요로하지 않았다 (나는 그것을 미래에 사용할지도 모른다). 마지막으로 사용한 코드는 다음과 같습니다. $ models = Products :: model() -> ('productcategories') -> findAll ('productcategories.Id = 1'); –

+0

오, 이제 이해합니다. 이것이 도움이되기를 바랍니다. –