2013-05-27 3 views
0
나는 다음과 같은 테이블을 가지고

와 속성 :Laravel 4 : 모든 제품을 가져 오기는 관계 테이블

products (
    id 
) 

attributes (
    id 
    name 
    value 
) 

products_attributes (
    product_id, 
    attribute_id 
) 

그리고 특정 제품의 모든 속성을 쿼리 할 수 ​​있어야합니다. FLUENT QUERY BUILDER로이 작업을 시도했지만 내 코드에서 길을 잃어 가고 있습니다.

누군가 나를 도와 줄 수 있습니까?

답변

2

일반적으로 당신은 당신이 관계를 지정할 수있는 당신의 실체, 모두를위한 모델을 만들 것입니다 다음 belongsToMany() 방법은 다 대다 관계를 설정

class Product extends Eloquent 
{ 
    protected $table = 'products'; 

    public function attributes() 
    { 
     return $this->belongsToMany('Attribute', 'products_attributes'); 
    } 
} 

class Attribute extends Eloquent 
{ 
    protected $table = 'attributes'; 

    public function products() 
    { 
     return $this->belongsToMany('Product', 'products_attributes'); 
    } 
} 

. 첫 번째 매개 변수는 관련 모델 클래스 이름을 지정하고 두 번째 매개 변수는 두 엔티티 간의 연결을 보유하는 데이터베이스 테이블의 이름을 지정합니다.

이 ID 1234 제품을 찾으려면 다음과 같이 그것을 가져올 것이다 :

$product = Product::find(1234); 

을 그런 다음 마술 같은 모든 속성에 액세스 할 수 있습니다

$attributes = $product->attributes; 

를 자세한 내용은, 당신은 the documentation을 참조 할 수 있습니다.

+0

Eloquent는 내부적으로'protected $ attributes = array(); '를 사용하기 때문에 조심 해야겠다. – tomzx