如何单行检查Laravel Collection集合的指定键值是否存在?
Laravel Collection 键值对存在性单行校验方案
你不需要自定义existInCollection方法,Laravel 集合原生就提供了对应的能力,直接在中间件里调用即可:
- 单键值判断直接用
contains方法,写法比你预期的更简洁:
// 等价于你要实现的判断:集合中是否存在title字段值为Admin的项 if (auth()->user()->roles->contains('title', 'Admin')) { // 是管理员角色,放行后续请求 }
- 如果需要同时匹配多个键值对,直接给
contains传关联数组参数即可:
// 同时匹配角色名和所属守卫 if (auth()->user()->roles->contains(['title' => 'Admin', 'guard_name' => 'web'])) { // 校验通过逻辑 }
补充:
contains方法直接返回布尔值,完全适配中间件的判断场景。如果你习惯链式写法,也可以用auth()->user()->roles->where('title', 'Admin')->isNotEmpty()实现完全相同的效果,两种写法性能没有差异。
内容的提问来源于stack exchange,提问作者GoldyNoble
相关产品推荐
相关产品推荐

