具有多个集合的 Laravel 多个过滤器表

我正在尝试创建一个多重过滤函数来过滤我的表。我有一个名为 Product 的模型,它有名为 categories、colors 和 sizes 的集合。我有以下观点:


                <div class="col-6">

                    <div class="form-group mt-3">

                        <label>{{ __('Categories') }}</label>

                        <select class="form-control" id="select-categories">

                            <option value="0">All</option>

                            @foreach($categories as $category)

                            <option value="{{ $category->id }}">{{ $category->name }}</option>

                            @endforeach

                        </select>

                    </div>

                </div>

                <div class="col-6">

                    <div class="form-group mt-3">

                        <label>{{ __('Colors') }}</label>

                        <select class="form-control" id="select-colors">

                            <option value="0">All</option>

                            @foreach($colors as $color)

                            <option value="{{ $color->id }}">{{ $color->name }}</option>

                            @endforeach

                        </select>

                    </div>

                </div>

                <div class="col-6">

                    <div class="form-group mt-3">

                        <label>{{ __('Sizes') }}</label>

                        <select class="form-control" id="select-sizes">

                            <option value="0">All</option>

                            @foreach($sizes as $size)

                            <option value="{{ $size->id }}">{{ $size->name }}</option>

                            @endforeach

                        </select>

                    </div>

                </div>

然后我使用 JQuery 将 AJAX 请求发送到我的控制器,其中包含所有三个下拉列表的当前选定选项值。


示例数据:类别:所有颜色:红色尺码:小号


现在我想展示红色和小号的产品,但类别无关紧要。我通过使用一对多关系和链接表来获取集合。


$product->categories

$product->colors

$product->sizes

我不确定如何处理这个问题。


慕勒3428872
浏览 85回答 1
1回答

慕容森

你可以做类似下面的事情:public function index(ProductRequest $request)&nbsp;{&nbsp; &nbsp;$query = Product::where($request->validated());&nbsp; &nbsp;return ProductResource::collection($query);}在您的 ProductRequest 中,您可以定义要允许的过滤器class ProductRequest extends FormRequest{&nbsp; &nbsp;...&nbsp; &nbsp;public function rules()&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; return [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'categories' => 'exists:categories,id'&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;....&nbsp; &nbsp; &nbsp; ];&nbsp; &nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP