首页 » Ecstore » Ecstore getlist方法中filter的具体用法

Ecstore getlist方法中filter的具体用法

16734 5

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

本文原始地址:https://www.tiandiyoyo.com/2016/02/how-to-use-filter-on-getlist/
本站所有文章,除了特别注明外,均为本站原创,转载请注明出处来自www.tiandiyoyo.com

您可能还会对以下文章感兴趣:

评论前先开启评论开关:


5 Comments

  1. 非常不错!感谢!!!~

  2. 打码 :

    方法不错,学习了。

  3. 有点窄,我们没玩过什么ECSTORE的插不上话啊,哈哈。

载入分页评论...