下面是我的的类和使用方法、后期加上必填判断和其他验证就好了

thinkphp5 查询接口的懒人写法——根据定义的查询参数,自动生成查询where条件_thinkphp

使用方法

$select_datt = [
"id"=>["exp"=>"BETWEEN","start"=>"startid","end"=>"endid"],
"state"=>["exp"=>"LIKE","name"=>"ggh_martial_arts_have.state"],
"name"=>["exp"=>"=","name"=>"name"]
];

list($where,$page, $limit,$sort) = apibuildparams($_POST,$select_datt);

<?php
// 这是系统自动生成的公共文件


//$data = [] 获取到的数据
//$select_datt 需要查询的数组
//会自动生成 $where,$page,$limit
if (!function_exists('apibuildparams')) {
//post https请求,CURLOPT_POSTFIELDS xml格式
function apibuildparams($data = [],$select_datt) {
$where = [];


// var_dump($select_datt);
foreach ($select_datt as $key => $value) {


if (isset($select_datt[$key])&&!empty($select_datt[$key]) && isset($data[$key])&&!empty($data[$key])) {


if (trim(strtoupper($value["exp"])," ") == "LIKE") {

$where[$value["name"]] = [$value["exp"],"%".$data[$key]."%"];

} else if (trim(strtoupper($value["exp"])," ") == "IN" || trim(strtoupper($value["exp"])," ") == "NOTIN") {

$where[$value["name"]] = [$value["exp"],$data[$key]];

} else if (isset($key)) {

$where[$value["name"]] = $data[$key];

}

} else if (is_array($value)) {
if (trim(strtoupper($value["exp"])," ") == "BETWEEN" || trim(strtoupper($value["exp"])," ") == "NOTBETWEEN") {

if (isset($data[$value["start"]])&&!empty($data[$value["start"]]) && isset($data[$value["end"]])&&!empty($data[$value["end"]])) {
if (isset($value["name"])&&!empty($value["name"])) {

$where[$value["name"]] = [$value["exp"],[$data[$value["start"]],$data[$value["end"]]]];

} else {

$where[$key] = [$value["exp"],[$data[$value["start"]],$data[$value["end"]]]];

}
} else if (isset($data[$value["start"]])&&!empty($data[$value["start"]])) {
$where["createtime"] = [">", $data[$value["start"]]];
//start,end
} else if (isset($data[$value["end"]])&&!empty($data[$value["end"]])) {
$where["createtime"] = ["<", $data[$value["end"]]];
}


} else if (trim(strtoupper($value["exp"])," ") == "BETWEENTIME" || trim(strtoupper($value["exp"])," ") == "NOTBETWEENTIME") {
if (isset($data[$value["start"]])&&!empty($data[$value["start"]]) && isset($data[$value["end"]])&&!empty($data[$value["end"]])) {
if (isset($value["name"])&&!empty($value["name"])) {

$where[$value["name"]] = [$value["exp"],[strtotime($data[$value["start"]]),strtotime($data[$value["end"]])]];

} else {

$where[$key] = [$value["exp"],[strtotime($data[$value["start"]]),strtotime($data[$value["end"]])]];

}
} else if (isset($data[$value["start"]])&&!empty($data[$value["start"]])) {
$where["createtime"] = [">", strtotime($data[$value["start"]])];
//start,end
} else if (isset($data[$value["end"]])&&!empty($data[$value["end"]])) {
$where["createtime"] = ["<", strtotime($data[$value["end"]])];
}


} else if (trim(strtoupper($value)," ") == "LIKE") {
$where[$key] = [$value,"%".$data[$key]."%"];
} else if (trim(strtoupper($value)," ") == "IN" || trim(strtoupper($value)," ") == "NOTIN") {
$where[$key] = [$value,$data[$key]];
} else {
$where[$key] = $data[$key];
}

}
}
/*排序*/
$sort ="";
$sortarray=[];
if( (isset($data["sort"])&&!empty($data["sort"]))&&is_array($data["sort"])){
foreach ($data["sort"] as $key => $value) {
$filter=$value["filter"]." ".$value["order"];

array_push($sortarray,$filter);
}
$sort=implode(",",$sortarray);
}else if( (isset($data["sort"])&&!empty($data["sort"]))){

// var_dump(json_encode([["filter"=>"id","order"=>"desc"]]));die;
$data["sort"]=json_decode($data["sort"],true);

foreach ($data["sort"] as $key => $value) {
// var_dump($value);die;
$filter= $value["filter"]." ".$value["order"];
// var_dump($filter);die;
array_push($sortarray,$filter);
}
$sort=implode(",",$sortarray);
}

/*排序结束*/
$page = (isset($data["page"])&&!empty($data["page"]))?$data["page"]:1;
$limit = isset($data["limit"])&&!empty($data["limit"])?$data["limit"]:10;
return [$where,$page,$limit,$sort];
}
}