You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel项目实现产品按冷热菜品分类过滤的方法

Laravel 菜品分类过滤实现方案

1. 先确认数据库字段

得保证你的products表有对应分类的字段——要么直接存分类名称(比如"Hot Dish"、"Cold Dish",字段名比如menu_category),要么用关联ID(比如menu_variety_id关联menu_varieties表的主键),这是筛选的基础。

2. 修改控制器处理筛选逻辑

在控制器的index方法里,接收前端传的分类参数,动态过滤产品:

public function index(Request $request) {
    // 先构建基础查询
    $productsQuery = Products::orderBy('created_at', 'desc');

    // 检查是否有分类筛选参数
    if ($category = $request->get('category')) {
        // 如果是按分类名称筛选,用这个
        $productsQuery->where('menu_category', $category);
        // 如果是按关联ID筛选,替换成下面这行
        // $productsQuery->where('menu_variety_id', $category);
    }

    $uploadProducts = $productsQuery->get();

    $addProducts = AddProducts::all();
    $dishes = Dishes::all();
    $variety = MenuVariety::all();

    return view('Products.products', compact('uploadProducts','dishes','addProducts', 'variety'));
}

3. 改造下拉表单支持筛选提交

把表单改成GET提交(适合筛选场景,支持书签和刷新),并且让下拉框默认选中当前筛选的分类:

<form method="GET" action="{{ route('products.index') }}">
    <div class="form-group">
        <label for="category">Product Type:</label>
        <select class="form-control" name="category" id="category" onchange="this.form.submit()">
            <!-- 加个“全部产品”的默认选项 -->
            <option value="" {{ request('category') == '' ? 'selected' : '' }}>All Products</option>
            @foreach ($variety as $cate)
                <option value="{{ $cate->menu_categories }}" {{ request('category') == $cate->menu_categories ? 'selected' : '' }}>
                    {{ $cate->menu_categories }}
                </option>
            @endforeach
        </select>
    </div>
    <!-- 也可以加个提交按钮,或者用上面的onchange自动提交 -->
    <!-- <button type="submit" class="btn btn-sm btn-primary">筛选</button> -->
</form>

提示:如果你的路由没命名,把route('products.index')换成url('/products')就行;加onchange是选完分类自动提交,不用点按钮,更方便。

4. 产品展示代码不用改

原来的产品循环代码直接保留就行,因为$uploadProducts已经是筛选后的结果了,只会显示对应分类的菜品。

可选优化

  • 如果想要无刷新筛选,给下拉框绑定AJAX事件,请求控制器返回筛选后的产品HTML片段,替换页面上的产品区域。
  • 给products表的分类字段加数据库索引,提升筛选速度。

内容的提问来源于stack exchange,提问作者GHIGB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 00:37:50