需要找出满足以下条件的用户 - 角色类型为普通角色,年龄为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的变量也多,拼接后觉得有点长
想请教下有没有办法缩减代码量,个人倾向于喜欢用数组拼接,谢谢
最佳答案
