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

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

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

PHP
慕勒3428872 2023-04-21 16:37:38
我正在尝试创建一个多重过滤函数来过滤我的表。我有一个名为 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我不确定如何处理这个问题。
查看完整描述

1 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

你可以做类似下面的事情:


public function index(ProductRequest $request) 

{

   $query = Product::where($request->validated());


   return ProductResource::collection($query);

}

在您的 ProductRequest 中,您可以定义要允许的过滤器


class ProductRequest extends FormRequest

{

   ...

   public function rules()

   {

      return [

         'categories' => 'exists:categories,id'

         ....

      ];

   }


查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 84 浏览

添加回答

举报

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