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

232 阅读1分钟

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

在这里插入图片描述

使用方法

     $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];
    }
}