Laravel 如何获取数据库表中匹配指定restaurant_id字段值的所有记录
问题排查&解决步骤
- 第一步:校验
$restaurantId变量有效性
无报错但无返回结果最常见的原因是变量值不符合预期,你可以先临时添加调试代码输出变量值,确认其非空、类型和数据库restaurant_id字段类型匹配(比如字段为整型时变量不要传字符串格式的数字、空值等):dd($restaurantId); - 第二步:校验生成的SQL语句正确性
你可以打印查询构造器生成的原生SQL和绑定参数,直接放到数据库中执行,确认是否真的存在匹配的记录:
如果直接执行SQL也无匹配结果,说明是数据或参数值的问题,和查询代码逻辑无关。$query = DB::table('bookings')->where('restaurant_id', $restaurantId); // 输出SQL语句和绑定的参数 dd($query->toSql(), $query->getBindings()); - 第三步:补全缺失的业务逻辑
你的旧代码包含排序、转数组的操作,新代码缺失这部分逻辑,如果后续业务依赖数组格式/排序后的结果,也会导致功能异常,推荐直接在数据库层面完成排序(性能远高于查完全部数据后在PHP层面排序),完整可运行的代码如下:$records = DB::table('bookings') ->where('restaurant_id', $restaurantId) ->orderBy('booking_time') ->get() ->toArray(); - 其他排查点
检查bookings表的restaurant_id字段名是否拼写正确,比如是否存在resturant_id这类拼写错误、大小写不匹配的问题。
内容的提问来源于stack exchange,提问作者ImCoding
相关产品推荐
相关产品推荐

