Laravel中如何根据用户验证状态动态设置SELECT查询字段
动态构建Laravel用户查询字段
可以通过动态收集查询字段的方式,复用基础查询逻辑,完美适配你的需求:
实现思路
- 先初始化基础查询实例,复用
where('id', $user->id)条件 - 根据用户的验证状态,动态添加需要查询的字段
- 最后执行统一的查询逻辑
完整代码示例
// 初始化基础查询 $query = \App\Models\User::where('id', $user->id); // 动态收集要查询的字段 $selectFields = []; if ($user->is_email_verify == 1) { $selectFields[] = 'is_email_verify'; } if ($user->is_phone_verify == 1) { $selectFields[] = 'is_phone_verify'; } // 执行查询 $result = !empty($selectFields) ? $query->select($selectFields)->first() : $query->first(); // 两个验证都未通过时的兜底逻辑,可按需调整
补充说明
- 自动适配三种场景:仅邮箱验证通过时查询
is_email_verify,仅手机号验证通过时查询is_phone_verify,两者都通过时同时查询两个字段 - 修正了你示例中重复写
is_email_verify的笔误(原本应为is_phone_verify) - 逻辑可扩展性强,后续新增其他验证字段只需添加对应
if判断即可
内容的提问来源于stack exchange,提问作者test123
相关产品推荐
相关产品推荐

