Laravel中when和unless条件查询子句怎么用
发布时间 - 2025-11-12 00:00:00 点击率:次when在条件为真时添加查询,unless在条件为假时添加查询,两者结合第三个参数可处理else逻辑,使Laravel查询更简洁清晰。
在 Laravel 的查询构建器中,when 和 unless 是两个非常实用的条件控制方法,用于根据运行时条件动态添加查询逻辑,避免写一堆 if 判断,让代码更简洁清晰。
when:满足条件时执行查询
当你希望在某个值存在或满足条件时才添加查询语句,可以使用 when 方法。
语法如下:
$query->when($condition, function ($query) { ... })只有当 $condition 为 true(或可调用函数返回 true)
时,闭包中的查询才会被应用。
示例:根据用户输入的搜索关键词过滤数据
$keyword = request('keyword');User::query() ->when($keyword, function ($query) use ($keyword) { $query->where('name', 'like', "%{$keyword}%"); }) ->get();
如果 $keyword 不为空,就会加上模糊查询;为空则跳过这个条件。
你也可以传入一个回调作为判断条件:
->when(auth()->check(), function ($query) { $query->where('is_active', 1); })unless:不满足条件时执行查询
unless 正好和 when 相反:只有当条件为 false 时,才会执行闭包中的查询。
语法类似:
$query->unless($condition, function ($query) { ... })示例:仅当用户未提供状态筛选时,默认排除已删除记录
$status = request('status');User::query() ->unless($status, function ($query) { $query->where('deleted_at', null); }) ->get();
也就是说,如果 $status 为空(即没选状态),就自动加个软删除过滤;如果已选择,则不加这个限制。
结合 else 场景使用 when 的第三个参数
when 还支持第三个参数,用来处理“否则”逻辑。
->when($condition, function ($query) { /* 条件为真时 */ }, function ($query) { /* 条件为假时 */ } )示例:管理员看全部数据,普通用户只能看自己的
User::query() ->when( auth()->user()->is_admin, function ($query) { // 管理员:不做限制 }, function ($query) { $query->where('id', auth()->id()); } ) ->get();基本上就这些。合理使用 when 和 unless 能让你的查询逻辑更干净,减少 if-else 嵌套,提升可读性。
# word
# laravel
# NULL
# if
# 堆
# 闭包
# function
# 第三个
# 为空
# 才会
# 自己的
# 包中
# 就会
# 当你
# 能让
# 不做
# 可以使用
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何在局域网内绑定自建网站域名?
如何在IIS7中新建站点?详细步骤解析
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
Android Socket接口实现即时通讯实例代码
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
创业网站制作流程,创业网站可靠吗?
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层
Android自定义控件实现温度旋转按钮效果
如何基于云服务器快速搭建个人网站?
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
潮流网站制作头像软件下载,适合母子的网名有哪些?
如何快速启动建站代理加盟业务?
详解阿里云nginx服务器多站点的配置
如何在不使用负向后查找的情况下匹配特定条件前的换行符
Laravel如何监控和管理失败的队列任务_Laravel失败任务处理与监控
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
Laravel distinct去重查询_Laravel Eloquent去重方法
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
如何在IIS中配置站点IP、端口及主机头?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
如何实现建站之星域名转发设置?
宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】
如何获取上海专业网站定制建站电话?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
如何为不同团队 ID 动态生成多个独立按钮
Laravel中的Facade(门面)到底是什么原理
如何快速生成可下载的建站源码工具?
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
企业网站制作这些问题要关注
php在windows下怎么调试_phpwindows环境调试操作说明【操作】
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
PHP 500报错的快速解决方法
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
如何在建站宝盒中设置产品搜索功能?
如何用低价快速搭建高质量网站?
使用C语言编写圣诞表白程序
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
Linux网络带宽限制_tc配置实践解析【教程】
东莞市网站制作公司有哪些,东莞找工作用什么网站好?

