如何在Laravel 5.5中实现age=10的多字段模糊查询
转换后的Laravel 5.5查询构造器写法
没问题,这就把你给出的MySQL查询转换成Laravel 5.5适配的查询构造器代码,两种常用场景的写法都给你列出来:
1. 使用DB门面直接操作数据表
$results = DB::table('table') // 匹配age等于10的基础条件 ->where('age', 10) // 用闭包包裹OR分组条件,确保括号优先级和原SQL一致 ->where(function ($query) { $query->where('first_name', 'like', '%name%') ->orWhere('last_name', 'like', '%name%'); }) // 获取最终结果集 ->get();
2. 使用Eloquent模型(若已创建对应模型)
假设你已经为该表创建了Eloquent模型(比如命名为TableModel),可以直接通过模型调用查询构造器:
$results = TableModel::where('age', 10) ->where(function ($query) { $query->where('first_name', 'like', '%name%') ->orWhere('last_name', 'like', '%name%'); }) ->get();
关键说明
这里的核心是用闭包包裹OR条件组,Laravel会自动为闭包内的条件添加括号,完美还原原SQL中(first_name like %name% OR last_name like %name%)的优先级逻辑,避免出现条件逻辑混乱的问题。
内容的提问来源于stack exchange,提问作者rckycls
相关产品推荐
相关产品推荐

