Home  >  Article  >  Backend Development  >  Analysis on ThinkPHP's use of getlist method to implement data search function

Analysis on ThinkPHP's use of getlist method to implement data search function

不言
不言Original
2018-06-08 11:58:511999browse

This article mainly introduces ThinkPHP's use of the getlist method to implement data search functions. It analyzes in detail in the form of examples, thinkPHP's implementation of reading and displaying data based on given conditions based on getlist and other related operating techniques. Friends who need it can Refer to the following

The example of this article describes ThinkPHP's use of the getlist method to implement the data search function. Share it with everyone for your reference, the details are as follows:

I write the getlist method in the model in ThinkPHP. In fact, the so-called search function is nothing more than like %string%, or other used in database queries. The field name = specific value, these sql statements are spliced ​​into the and statement;

In HTML:

<form action="" method="get">
    <table class="account_table" width="100%" cellpadding="0" cellspacing="0">
      <tr>
        <td style="text-align:right">订单号:</td>
        <td>
          <input id="Orderid" name="order_sn" class="inp_wid3" type="text" value="{$_GET[&#39;order_sn&#39;]}"/>
        </td>
        <td style="text-align:right">
          下单日期:
        </td>
        <td colspan="5">
          <input type="text" class="inp_wid2" id="BeginTime" name="begintime" value="{$_GET[&#39;begintime&#39;]}" />
          至
          <input type="text" class="inp_wid2" id="EndTime" name="endtime" value="{$_GET[&#39;endtime&#39;]}" />
           交易完成日期
          <input type="text" class="inp_wid2" id="txtFinishedBeginTime" name="finishbegintime" value="{$_GET[&#39;finishbegintime&#39;]}" />
          至
          <input type="text" class="inp_wid2" id="txtFinishedEndTime" name="finishendtime" value="{$_GET[&#39;finishendtime&#39;]}" />
           订单金额:
          <input type="text" class="inp_wid2" id="txtMoneyMin" name="count_price_min" value="{$_GET[&#39;count_price_min&#39;]}"/>
          至
          <input type="text" class="inp_wid2" id="txtMoneyMax" name="count_price_max" value="{$_GET[&#39;count_price_max&#39;]}" />
        </td>
      </tr>
      <tr>
        <td style="text-align:right; width:80px">采购商名称:</td>
        <td style="width:140px">
          <input id="SupermarketName" name="user_nick_name" class="inp_wid3" type="text" value="{$_GET[&#39;user_nick_name&#39;]}" />
        </td>
        <td style="text-align:right; width:80px">采购商账号:</td>
        <td style="width:140px">
          <input id="SupermarketZh" name="user_name" class="inp_wid3" type="text" value="{$_GET[&#39;user_name&#39;]}" />
        </td>
      </tr>
      <tr>
        <td colspan="2">
          <input class="search_btn1" type="submit" value="搜索" id="Search" />
          </td>
      </tr>
    </table>
</form>

I see no GET Method to submit the form, this is the query condition filling option;

In the controller:

$order_msg=$order->getList();
$this->assign(&#39;info&#39;,$order_msg);//这个获取订单的详细信息

In the Model:

public function getList($pagesize=25){
     $tableName = $this->getTableName();
   $where = $tableName.&#39;.service_id = &#39;.$_SESSION[&#39;service_site&#39;][&#39;service_id&#39;];
   if(!empty($_GET[&#39;order_sn&#39;])){//查询订单号
       $where.= " and $tableName.`order_sn` like &#39;%".$_GET[&#39;order_sn&#39;]."%&#39;";
     }
   if(!empty($_GET[&#39;count_price_min&#39;])){//查询订单最小金额
       $where.= " and $tableName.count_price >=".$_GET[&#39;count_price_min&#39;]."";
     }
   if(!empty($_GET[&#39;begintime&#39;])){//下单开始日期搜索
    $_GET[&#39;begintime&#39;]=strtotime($_GET[&#39;begintime&#39;]);//将日期转为时间戳
    $where.= " and $tableName.add_time >=".$_GET[&#39;begintime&#39;]."";
    $_GET[&#39;begintime&#39;]=date(&#39;Y-m-d&#39;,$_GET[&#39;begintime&#39;]);//将日期转为时间戳
   }
   if(!empty($_GET[&#39;endtime&#39;])){//下单结束日期搜索
     $_GET[&#39;endtime&#39;]=strtotime($_GET[&#39;endtime&#39;]);//将日期转为时间戳
    $where.= " and $tableName.add_time <=".$_GET[&#39;endtime&#39;]."";
    $_GET[&#39;endtime&#39;]=date(&#39;Y-m-d&#39;,$_GET[&#39;endtime&#39;]);//将时间戳转换成日期,方便刷新页面后前台显示
   }
   if(!empty($_GET[&#39;finishbegintime&#39;])){//交易完成开始日期搜索
    $_GET[&#39;finishbegintime&#39;]=strtotime($_GET[&#39;finishbegintime&#39;]);//将日期转为时间戳
    $where.= " and $tableName.ok_time >=".$_GET[&#39;finishbegintime&#39;]."";
    $_GET[&#39;finishbegintime&#39;]=date(&#39;Y-m-d&#39;,$_GET[&#39;finishbegintime&#39;]);//将日期转为时间戳
   }
   if(!empty($_GET[&#39;finishendtime&#39;])){//交易完成结束日期搜索
     $_GET[&#39;finishendtime&#39;]=strtotime($_GET[&#39;finishendtime&#39;]);//将日期转为时间戳
    $where.= " and $tableName.ok_time <=".$_GET[&#39;finishendtime&#39;]."";
    $_GET[&#39;finishendtime&#39;]=date(&#39;Y-m-d&#39;,$_GET[&#39;finishendtime&#39;]);//将时间戳转换成日期,方便刷新页面后前台显示
   }
   if(!empty($_GET[&#39;send&#39;])){//查询已发货预警订单,发货时间距离此刻超过五天
    $where.= " and $tableName.send_time < &#39;".(time()-60*60*24*5)."&#39;";
   }
   if(!empty($_GET[&#39;doingorder&#39;])){//查询处理中的订单
    $where.= " and $tableName.status in (0,1)";
   }
   if(!empty($_GET[&#39;warningorder&#39;])){//查询预警的订单:已经付款且时间超过24小时未发货
    $where.= " and $tableName.pay_time < &#39;".(time()-60*60*24)."&#39;";
   }
   if(!empty($_GET[&#39;warningorder&#39;])){//查询预警的订单:已经付款且时间超过24小时未发货
    $where.= " and $tableName.is_pay = 1 ";
   }
   if(!empty($_GET[&#39;warningorder&#39;])){//查询预警的订单:已经付款且时间超过24小时未发货
   $where.= " and $tableName.status in (0,1)";
   }
   if(!empty($_GET[&#39;count_price_max&#39;])){//查询订单最大金额
    $where.= " and $tableName.count_price <=".$_GET[&#39;count_price_max&#39;]."";
   }
   if(!empty($_GET[&#39;user_nick_name&#39;])){//查询采购商名称
    $where.= " and fab_user.nick_name like &#39;".$_GET[&#39;user_nick_name&#39;]."%&#39;";
   }
   if(!empty($_GET[&#39;user_name&#39;])){//查询采购商账号
    $where.= " and fab_user.user_name like &#39;".$_GET[&#39;user_name&#39;]."%&#39;";
   }
   if(!empty($_GET[&#39;supplier_nick_name&#39;])){//查询供应商商名称
    $where.= " and fab_supplier.nick_name like &#39;".$_GET[&#39;supplier_nick_name&#39;]."%&#39;";
   }
   if(!empty($_GET[&#39;supplier_name&#39;])){//查询供应商账号
    $where.= " and fab_supplier.supplier_name like &#39;".$_GET[&#39;supplier_name&#39;]."%&#39;";
   }
   if($_GET[&#39;history&#39;] == 1){
     $where .= " and {$tableName}.status in (2,3,4) ";
   }
   if(($_GET[&#39;pay_type&#39;])!=""&&($_GET[&#39;pay_type&#39;])!=-1){//查询支付方式
    $where.= " and fab_order_info.pay_type = ".$_GET[&#39;pay_type&#39;]."";
   }
   if(($_GET[&#39;status&#39;])!=""&&($_GET[&#39;status&#39;])!=-1){//查询订单状态
    $where.= " and fab_order_info.status = ".$_GET[&#39;status&#39;]."";
   }
     if(!empty($_GET[&#39;stime&#39;]) && !empty($_GET[&#39;etime&#39;])){
       $stime = strtotime($_GET[&#39;stime&#39;]);
       $etime = strtotime($_GET[&#39;etime&#39;]) + 24*60*60;
       $where.= " and ($tableName.`inputtime` between &#39;$stime&#39; and &#39;$etime&#39;)";
     }
     $count = $this->where($where)->count();
     $this->countNum = $count;
     $Page = new \Think\Page($count,$pagesize);
     $this->page = $Page->show();
     $limit = $Page->firstRow.&#39;,&#39;.$Page->listRows;
    $sql="select $tableName.*,fab_supplier.nick_name as supplier_nick_name,fab_user.nick_name as user_nick_name
    from ($tableName left join fab_supplier on fab_order_info.supplier_id=fab_supplier.supplier_id)
    left join fab_user on fab_order_info.user_id=fab_user.user_id where $where order by $tableName.`order_id` desc limit $limit";
    $sqls="select sum(fab_order_info.count_price) as order_price,count(fab_order_info.count_price) as order_count
    from $tableName where $where order by $tableName.`order_id` desc limit $limit";
    $this->sql_msg=$this->query($sqls);
    return $this->query($sql);//订单详细信息
}

You only need to pay attention to the GET data acquisition, and then splice the SQL statement; why do you always splice incorrectly! ! !

<?php
namespace Admin\Model;
use Think\Model;
class KuaidicompanyModel extends Model {
  private $page = "";
  public function getList($pagesize=25){
    $where = &#39;1&#39;;
    $tableName = $this->getTableName();
    $count = $this->where($where)->count();
    $Page = new \Think\Page($count,$pagesize);
    $this->page = $Page->show();
    $limit = $Page->firstRow.&#39;,&#39;.$Page->listRows;
    return $this->query("select * from $tableName where $where order by $tableName.`id` asc limit $limit ");
  }
  public function getPage(){
    return $this->page;
  }
}

Simplified general version of getlist, suitable for paging.

<?php
namespace Admin\Model;
use Think\Model;
class KuaidicompanyModel extends Model {
  private $page = "";
  public function getList($pagesize=25){
    $where = &#39;1&#39;;
    $tableName = $this->getTableName();
    $count = $this->where($where)->count();
    $Page = new \Think\Page($count,$pagesize);
    $this->page = $Page->show();
    $limit = $Page->firstRow.&#39;,&#39;.$Page->listRows;
    return $this->query("select * from $tableName where $where order by $tableName.`id` asc limit $limit ");
  }
  public function getPage(){
    return $this->page;
  }
}

The streamlined version of MODEL is used for automatic data verification

The above is the entire article Content, I hope it will be helpful to everyone’s learning. For more related content, please pay attention to the PHP Chinese website!

Related recommendations:

Analysis on ThinkPHP watermarking and setting watermark position

About thinkphp framework to implement data addition and Displayed functional methods

Source code analysis of setInc method in thinkphp3.2.0

The above is the detailed content of Analysis on ThinkPHP's use of getlist method to implement data search function. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn