题目描述
在一个列表数据中,我们可能会有一些筛选条件,这些筛选条件是用户随机勾选的。后端需要根据这些筛选条件做数据查询,就会涉及到某个筛选字段存在,其他的筛选字段不存在的情况。如果用大量的 if 去判断,代码就不够优雅,该如何优化?
相关代码
这里就用 PHP 代码作为示例代码了,正好手里有 PHP 代码。
// 前端请求传入筛选参数
$requestParams = [];
// 根据传入的筛选参数组装筛选条件
$searchWhere = [];
if (!empty($requestParams['id'])) {
array_push($searchWhere, ['id', '=', $requestParams['id']);
}
if (!empty($requestParams['name'])) {
array_push($searchWhere, ['name', '=', $requestParams['name']);
}
if (!empty($requestParams['score'])) {
array_push($searchWhere, ['score', '>', $requestParams['score']);
}
if (!empty($requestParams['dates'])) {
$date = explode(',', $requestParams['dates']);
array_push($searchWhere, ['date', '>', $date[0]);
array_push($searchWhere, ['date', '<', $date[1]);
}
// 查询数据
$items = DB::query()->where($searchWhere)->get();
你期待的结果是什么?实际看到的错误信息又是什么?
能够减少 if 条件的判断。最好是能封装成一个类什么的,来进行处理。减少这种重复、低效的代码。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…