Laravel:如何在选项卡上显示因变量

时间:2016-10-31 08:29:41

标签: javascript php laravel-5 laravel-5.2

我有两个表,类别和产品。每个类别都有id和name。每个产品都有id,name和category id。现在,我想在每个选项卡上显示用户点击特定category_id.so相关产品时在每个选项卡上加载数据。我已经尝试但无法获得解决方案。

类别模型:

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>

这是路线:

Route::get('/testItem',[
'uses'=>'ItemController@gettestItem',
'as'=>'testItem'
]);

如果有人能帮我解决问题将不胜感激。

1 个答案:

答案 0 :(得分: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

<强>更新

你的第二个foreach应该是:

<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>

您还可以使用以下代码仅获取具有相应categories的{​​{1}}代码:

products