2016-07-05 3 views
2

내 데이터베이스에는 Categories 테이블이 있습니다. 카테고리에는 부모 카테고리가있어 재귀 관계가됩니다.부모님 아래에있는 모든 아이들을 설득력있게 얻으려면 어떻게해야합니까?

제품 테이블도 있습니다. 각 제품은 카테고리에 속합니다.

말, 예를 들어, 나는이처럼 보이는 나무가 : 나는 $SubCategory1->products 할 경우

Category 
    Sub-Category 1 
     Sub-Sub-Category 1 
      Product 1 
      Product 2 
      Product 3 
      Product 4 
     Sub-Sub-Category 2 
      Product 5 
      Product 6 
      Product 7 
      Product 8 
    Sub-Category 2 
     Sub-Sub-Category 3 
      Product 9 
      Product 10 
      Product 11 
      Product 12 

, 나는이 제품 1-8

내가 $SubSubCategory3->products을 할 경우 나에게주고 싶어를, I 내가 $Category->products 할, 나는 그것이

는 기본적으로, 완 모든 제품을 나에게주고 싶은 경우 나에게 제품 9-12

을주고 싶어 모든 IT

+0

당신은 확인했다 [통해 많은 있음] (https://laravel.com/docs/5.2/eloquent-relationships#has-many-through)? –

+0

이 예에는 테이블이 2 개뿐입니다. 어떻게 많은 도움을 받았습니까? – botmin

+0

'Store'도 카테고리입니까? – Doom5

답변

1

을 찾을 수 $category->products;을 사용할 수 있습니다, 나는 포기하고 그냥 내가 나 자신을 원하는 것을 할 수있는 코드를 작성 결국, 그것은 작은 결국 내가 예상했던 것보다.

public function all_products() 
{ 
    $products = []; 
    $categories = [$this]; 
    while(count($categories) > 0){ 
     $nextCategories = []; 
     foreach ($categories as $category) { 
      $products = array_merge($products, $category->products->all()); 
      $nextCategories = array_merge($nextCategories, $category->children->all()); 
     } 
     $categories = $nextCategories; 
    } 
    return new Collection($products); //Illuminate\Database\Eloquent\Collection 
} 
0

에 해당 제품 모델 이름을 가정을 제공하기 위해 카테고리를 마에 당신의 컨트롤러 방법보다 사용 분류 모델

public function children() { return $this->hasMany('App\Category', 'parent_id', 'id'); } 

에 함수를 만듭니다 종류

입니다

$categories = Category::with('children')->where('parent_id',0)->get(); 
+0

이 특정 상위 ID가있는 카테고리를 제공한다는 것을 분명히해야합니다. 일치하는 부모를 직접 또는 간접적으로 가지고있는 제품을 원합니다. – botmin

0

아래를 시도하십시오 많은 관계 있음 및 결과 게시

,

그럼 당신은 잘 Laravel를 사용하는 답을 찾으려 후 제품

+0

다른 제품이 아닌 1 레벨 위로 작동합니다. [예] (http://i.imgur.com/wy1iJXl.png). 이 스크린 샷에서 "트레이 (tray)"에는 4 개의 제품이 있고, 상위에는 12 개의 제품이 있고 부모의 부모에게는 그 이상의 제품이 있어야합니다. – botmin

+0

관계 선박 정보가 어떻게 해석되는지 이해하기 위해 생성 된 쿼리를 로깅 해보십시오. –

관련 문제