福利彩票投注站收入,请教个复杂where拼接问题

浏览:121 发布日期:2019/10/18 分类:求助交流
问题:
需要找出满足以下条件的用户 - 角色类型为普通角色,年龄为10岁 或者 (20岁并且姓名为 'lxr') 的所有用户

目标sql语句:
SELECT * FROM `user` WHERE `role` = 1 AND ( `age` = 10 OR ( `age` = 20 AND `name` = 'lxr' ) )

变量:
$role = 1;
$age1 = 10;
$age2 = 20;
$name = 'lxr';

我的实现方法:
 db('user')->where('role', $role)->where(function($query) use ($age1, $age2, $name) {
   $query->where('age', $age1)->whereOr(function ($query) use ($age2, $name) {
    $query->where([
      'age' => $age2,
      'name' => $name
    ]);
  });
 })->select();


目前我实现的方式是使用闭包拼接,但是看起来过于繁琐,而且如果参数多的话,需要use的变量也多,拼接后觉得有点长
想请教下有没有办法缩减代码量,个人倾向于喜欢用数组拼接,谢谢


最佳答案
评论( 相关
后面还有条评论,点击查看>>