为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel Blade上的筛选器枢轴表

Laravel Blade上的筛选器枢轴表

PHP
倚天杖 2021-05-07 14:15:32
我有表格-带有数据透视表的产品和类别。我需要做的是在选项卡中的视图上显示类别并获取相应的产品。// Product.phppublic function categories(){    return $this->belongsToMany('App\Models\Category');}// Category.phppublic function products(){    return $this->belongsToMany('App\Product');}// IndexController.php$products = Product::where('status', StatusConstant::PT_ACTIVE)                ->with(['joindraw' => function ($query){                        $query->where('user_id', $this->user->id);                }])->get();return view('store.index', ['products' => $products, 'category' => $category]);我期望这样的输出:<div class="row">    <div class="col s12">        <ul class="tabs">            <li class="tab"><a class="" href="#tabs1">Category 1</a></li>            <li class="tab"><a class="active" href="#tabs2">Category 2</a></li>            <li class="tab"><a class="" href="#tabs3">Category 3</a></li>        </ul>    </div>    <div id="tabs1" class="col s12">        <div class="contents-tabs">            <div class="table-contents default-table">              //Products in category id 1...我可以知道如何在刀片上做过滤器吗?
查看完整描述

2 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

不要将产品和相关产品一起发送到视图中,而不是将产品发送到视图中。


控制器


$categories = Category::with(['products' => function ($query) {

    $query->where('status', StatusConstant::PT_ACTIVE);

    $query->with(['joindraw' => function ($query) {

        $query->where('user_id', $this->user->id);

    }]);

}])->get();


return view('store.index', ['categries' => $categries]);

现在,您可以遍历每个类别并访问其相关产品。



<div class="row">

    <div class="col s12">

        <ul class="tabs">

            @foreach($categries as $category)

                <li class="tab"><a class="" href="#{{ $category->id }}">{{ $category->name }}</a></li>

            @endforeach()

       </ul>

    </div>


    @foreach($categories as $category)

        <div id="{{ $category->id }}" class="col s12">

            <div class="contents-tabs">

                <div class="table-contents default-table">

                    <!-- your code goes here -->

                    <!-- Imagine you wanna list product names. -->


                    <ul>

                        @foreach($category->products as $product)

                            <li>{{ $product->name }}</li>

                        @endforeach()

                    </ul>

                </div>

            </div>

       </div>

    @endforeach()

</div>


查看完整回答
反对 回复 2021-05-21
?
富国沪深

TA贡献1790条经验 获得超9个赞

您可以按类别对产品进行分组:


$categoryProducts = [];

foreach($products as $product){

    foreach($product->categories as $category){

        if(!isset($categoryProducts[$category->id])){

            $categoryProducts[$category->id] = [];

        }


        $categoryProducts[$category->id][$product->id]=$product;

    }

}

然后,您可以在每个标签中的类别ID中显示每个类别的产品。


查看完整回答
反对 回复 2021-05-21
  • 2 回答
  • 0 关注
  • 167 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信