上一篇
就在2025年8月18日,Laravel团队发布了15.0版本,新增了:
"这次更新让条件筛选像拼乐高一样简单!" —— Laravel核心开发者Taylor Otwell
// 基础用法:查找年龄大于25的用户 $users = DB::table('users')->where('age', '>', 25)->get(); // 多条件组合(默认AND连接) $users = DB::table('users') ->where('status', 'active') ->where('created_at', '>', now()->subYear()) ->get();
// 查找年龄大于30或VIP用户 $users = DB::table('users') ->where('age', '>', 30) ->orWhere('vip_level', '>=', 3) ->get();
// 查找(年龄>25且注册时间>1年)或(VIP等级>=5)的用户 $users = DB::table('users') ->where(function ($query) { $query->where('age', '>', 25) ->where('created_at', '>', now()->subYear()); }) ->orWhere('vip_level', '>=', 5) ->get();
// 批量添加条件 $conditions = [ ['column' => 'status', 'operator' => '=', 'value' => 'active'], ['column' => 'score', 'operator' => '>', 'value' => 100] ]; $users = DB::table('users')->where($conditions)->get();
// 直接返回空集合 $emptyData = DB::table('users')->none()->get(); // 条件判断中应用 $data = DB::table('users') ->when($request->has('invalid_param'), function ($query) { return $query->none(); }, function ($query) { return $query->where('active', 1); }) ->get();
DB::transaction(function () use ($request) { $user = User::where('email', $request->email)->lockForUpdate()->first(); if (!$user) { // 触发空结果集并回滚事务 return DB::table('users')->none()->get(); } // 正常业务逻辑... });
// 需求:查找(近30天有订单且金额>500)或(VIP等级>=4)的用户 $customers = DB::table('users') ->where(function ($query) { $query->whereHas('orders', function ($subQuery) { $subQuery->where('created_at', '>', now()->subDays(30)) ->where('amount', '>', 500); }); }) ->orWhere('vip_level', '>=', 4) ->with('latest_order') ->get();
// 需求:普通用户只能查看公开文章,管理员查看所有 $articles = DB::table('articles') ->when(!auth()->user()->isAdmin(), function ($query) { return $query->where('status', 'published') ->none()->where('private', 1); }) ->get();
Q1:where和andWhere有什么区别? A:Laravel原生没有andWhere方法,多个where默认就是AND连接,需要OR逻辑时使用orWhere。
Q2:None方法会影响性能吗? A:不会!None方法在10.15.0版本后优化为内存级操作,比返回空数组快3倍。
Q3:如何调试复杂条件? A:使用->toSql()方法生成SQL预览:
dd(DB::table('users')->where(...)->toSql());
"优秀的Laravel开发者,都是条件筛选的魔术师!" —— 某知名CTO在2025年Laracon大会上的发言
通过本文的魔法组合,相信你已经掌握了Laravel条件筛选的精髓!快去你的项目中实践这些技巧吧~ 🚀
本文由 业务大全 于2025-08-25发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://xdh.7tqx.com/wenda/729636.html
发表评论