Ecstore getlist方法中filter的具體用法
阿新 • • 發佈:2018-12-23
Ecstore自行封裝了db->select的處理方法getlist,基本上能滿足大部分的單表查詢功能,它的函式模型是public function getList($cols=’*’, $filter=array(), $offset=0, $limit=-1, $orderby=null)。從欄位取名不難看出,幾個引數從左到右分別是指返回的列名,過濾器,位置,限制條數,排序。
比如想要查詢members表內各種使用者記錄可以用下面的程式碼。
$members = $this->app->model('members'); //select * from members where member_id = 1; $members->getlist('*',array('member_id' => 1)); //select member_id,name from members where member_id =1; $members->getlist('member_id,name',array('member_id' => 1)); //select member_id,name from members where member_id =1 and name ='tiandi'; $members->getlist('member_id,name',array('member_id' => 1,'name' => 'tiandi')); //select member_id,name from members where member_id <2 and name ='tiandi'; $members->getlist('member_id,name',array('member_id|lthan' => 2));
更詳細的filter引數可通過dbeav/lib/filter.php檢視下面的程式碼獲悉:
$FilterArray= array('than'=>' > '.$var, 'lthan'=>' < '.$var, 'nequal'=>' = \''.$var.'\'', 'noequal'=>' <> \''.$var.'\'', 'tequal'=>' = \''.$var.'\'', 'sthan'=>' <= '.$var, 'bthan'=>' >= '.$var, 'has'=>' like \'%'.$var.'%\'', 'head'=>' like \''.$var.'%\'', 'foot'=>' like \'%'.$var.'\'', 'nohas'=>' not like \'%'.$var.'%\'', 'between'=>' {field}>='.$var[0].' and '.' {field}<='.$var[1], 'in' =>" in ('".implode("','",(array)$var)."') ", 'notin' =>" not in ('".implode("','",(array)$var)."') ", );
如果碰上條件帶有或邏輯的時候,上面的方法都不能直接使用,這個時候需要用到filter_sql。將所需要執行的sql語句where部分直接錄入在filter_sql中:
//select * from members where member_id = 1 or name = 'tiandi'; $members->getlist('*',array('filter_sql' => "`member_id` = 1 or `name` = 'tiandi'"));
以上即是所有的filter用法,可能會有遺漏,請自行補上。
文章評分8次,平均分3.4:★★★☆☆