2014-12-01 5 views
1

laravel에서 제품 카탈로그를 작성 중이며 해당 특성을 기반으로 제품을 필터링하고 싶습니다.Laravel : 관계로 웅변 데이터를 필터링하는 방법

나는 두 개의 테이블, 제품 & 속성을 가지고 있습니다. 속성에는 키, 값 및 product_id가 있습니다. 예를 들어 :

product_id - key - value 
12   - brand - BestBrandEver 
23   - brand - EvenBetterBrand 

는 지금은 "브랜드 = BestBrandEver 또는 브랜드 = EvenBetterBrand"와 같은 쿼리 문자열 매개 변수를 전달 카테고리 페이지에서 양식을 통해 내 제품을 필터링 할 수 및 만 제품을 검색하고 싶습니다 그 브랜드. 결국 색상, 재질 등도 동일하게하고 싶습니다. Magento 또는 Woocommerce의 계층 적 탐색과 매우 비슷합니다.

나는 올바른 방법으로 건물을 시작하는 법을 알지 못해 잠시 멈췄다. 이 일을 도와 줄 수있는 사람이 있습니까? 아니면 올바른 방향으로 안내 할 수 있습니까 (자습서 또는 비디오 포함)?

미리 감사드립니다.

+2

내용을 읽어 :

/products?filters[brand][]=a&filters[brand][]=b&filters[color][]=a&filters[color][]=b 

등 ...


는 그 속성에 의해 제품을 제한 할 whereHas 방법을 사용 docs http://laravel.com/docs/4.2/eloquent#querying-relations 또는 http://softonsofa.com/querying-relations-with-elo quaint-in-laravel-4/# straightToThePoint –

+2

Dayle Reese가 아마 당신을 능변적인 관계로 이끌 것입니다 : http://daylerees.com/codebright/eloquent-queries –

+0

@SaintGenius Dayle의 작품을 어떤 식 으로든 감추지 말고 당신이 연결 한 것은 조금 구식이고이 경우에는별로 도움이되지 않습니다. OP가 필요로하는 곳은 어디입니까? –

답변

3

이 같은 URL 가정 :

Product::whereHas('attributes', function ($query) { 
    foreach (Input::get('filters') as $key => $values) { 
     $query->orWhere(function($query) use ($key, $values) { 
      $query->where('key', $key)->whereIn('value', $values); 
     }); 
    } 
});