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:★★★☆☆

学习一下。
非常不错!感谢!!!~
感谢博主分享
方法不错,学习了。
有点窄,我们没玩过什么ECSTORE的插不上话啊,哈哈。