2016-10-31 16 views
1

私は2つのテーブル、カテゴリ、製品を持っています。それぞれのカテゴリにはIDと名前があります。各製品にはID、名前、カテゴリIDがあります。特定のcategory_id.so関連商品をユーザーがクリックしたときに、各タブにデータを読み込みたい場合は、それぞれのカテゴリタブに表示されます。私は試しましたが、解決策を得ることができませんでした。Laravel:従属変数をタブに表示する方法

カテゴリーモデル:

class Category extends Model 
{ 
    public function products() 

    { 
     return $this->hasMany('App\Product'); 
    } 
} 

商品型番:

class Product extends Model 
{ 
    public function category() 
     { 
      return $this->belongsTo('App\Category'); 
     } 

} 

ここでは私のコントローラである:ここでは

public function gettestItem() { 
       $categories = Category::with('products')->get(); 
       return view('products', compact('categories')); 
      } 

は図である。

<div class="container"> 
     <div id="content">    
      <ul id="tabs" class="nav nav-tabs" data-tabs="tabs"> 
      @foreach ($categories as $category)    
       <li><a href="#{{$category->id}}" data-toggle="tab" >{{$category->name}}</a></li> 
      @endforeach 
      </ul> 

      <div id="my-tab-content" class="tab-content"> 
       @foreach($categories as $category) 
        @foreach($category->products as $product) 
        <div class="tab-pane " id="{{$category->id}}"> 
         {{$product->name}} 
        </div> 
        @endforeach 
       @endforeach 
      </div>  
     </div> 
    </div> 
ここでは10

ルートです:

Route::get('/testItem',[ 
'uses'=>'[email protected]', 
'as'=>'testItem' 
]); 

誰も私が問題を解決するのに役立つことができれば理解されるであろう。

+1

あなたは([関係]上に読んで検討する必要がありますhttps://laravel.com/docs/5.2/eloquent-relationships)とlaravelの使い方[Query Builder](https://laravel.com/docs/5.2/queries) –

答えて

1

あなたのスキーマとの関係を定義した場合、適切に、関数のようにする必要があります:

public function gettestItem() { 
    $categories = Category::with('products')->get(); 
    return view('products', compact('categories')); 
} 

あなたは、各カテゴリの製品にアクセスすることができます

foreach ($categories as $category) { 
    $category->product; // gives all products corresponding to $category 
} 

Docs

をお読みください。

更新

あなたはまた、 productsに対応しているもの categoriesのみを取得するには、次のコードを使用することができます

<div id="my-tab-content" class="tab-content"> 
    @foreach($categories as $category) 
    <div class="tab-pane" id="{{$category->id}}"> 
     @foreach($category->products as $product) 
     <div> 
      {{$product->name}} 
     </div> 
     @endforeach 
    </div> 
    @endforeach 
</div> 

あなたの第二foreachはようでなければなりません

$categories = Category::has('products')->with('products')->get(); 
+0

私は雄弁な解決策に変わりました。しかし、解決策を手に入れることができませんでした。 – Hola

+0

具体的なエラーはありますか?また、あなたはあなたが何を期待しているのか、あなたが何を得ているのかを示すことができます。 –

+0

問題は、複数の製品を表示する代わりに、1つの製品のみが表示されているカテゴリIDにあります。 – Hola

関連する問題