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的插不上话啊,哈哈。