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

Laravel中通过下拉选框筛选车辆日志数据的实现方法咨询

解决方案

第一步:调整前端筛选表单

在你的admin/vehiclereport.blade.php中添加GET提交的筛选表单,示例代码如下:

<form action="{{ route('vehiclereport') }}" method="get">
    <select name="staff_key" class="form-select">
        <option value="">全部员工</option>
        @foreach($staff as $item)
        <option value="{{ $item->smsstaff_key }}" {{ request('staff_key') == $item->smsstaff_key ? 'selected' : '' }}>
            {{ $item->name }}
        </option>
        @endforeach
    </select>
    <button type="submit" class="btn btn-primary">筛选</button>
</form>

注意:路由名称如果不是vehiclereport请替换成你自己定义的对应路由名称

第二步:修改控制器查询逻辑

控制器中引入Request依赖,使用Laravel查询构造器的when方法动态追加筛选条件,修改后的代码如下:

use Illuminate\Http\Request;

public function vehiclereport(Request $request)
{
    // 构造基础查询
    $query = VehicleLog::join('vehicle', 'vehicleslog.vehicle_id', '=', 'vehicle.id')
        ->join('staff', 'vehicleslog.staff_key', '=', 'staff.smsstaff_key');
    
    // 存在员工筛选参数时追加过滤条件
    $query->when($request->filled('staff_key'), function ($q) use ($request) {
        $q->where('staff.smsstaff_key', $request->input('staff_key'));
    });
    
    // 执行查询 也可以换成paginate(10)实现分页效果
    $energy = $query->orderBy('vehicleslog.id', 'desc')->get();

    $cars = Vehicle::get();
    $staff = Staff::all();
    
    return view('admin.vehiclereport', compact('energy', 'cars', 'staff'));
}

注意:如果你的VehicleLog模型对应表名不是vehicleslog,请将join语句中的表名替换成你实际的表名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:48:01