基础查询
DAO提供了query
,find
等基本查询方式,使用也相当简单
// testAction.php namespace app\controller;/** * DAO 或者 Service 会自动映射 生成对应类的单例 * @property \app\dao\testDAO $testDAO */ class testActionextends baseAction- {
public function action_index ()- {
// 返回 testDAO所对应表的全部内容 格式为二维数组 [['id'=>1, 'name'=>'xx', 'type'=>2], ['id'=>2, 'name'=>'yy', 'type'=>3]] $data =$this ->testDAO ->query ();// 第一个参数为返回的字段 [['id'=>1, 'name'=>'xx'], ['id'=>2, 'name'=>'yy']] $data =$this ->testDAO ->query (array ('id' ,'name' ));// 第二个参数返回键值,会自动去重 [1 => ['id'=>1, 'name'=>'xx'], 2 => ['id'=>2, 'name'=>'yy']] $data =$this ->testDAO ->query (array ('id' ,'name' ),'id' );// 返回 表第一条数据 格式为一维 ['id'=>1, 'name'=>'xx', 'type'=>2] $data =$this ->testDAO ->find ();// 参数为返回的字段名 可以为字符串或者数组 ['name'=>'xx'] $data =$this ->testDAO ->find ('name');- }
- }
同时还支持count
,max
,sum
,min
,avg
等基本运算,count带参数即为参数去重后数量
// count(*) 返回数量 $count =$this ->testDAO ->count ();// count(distinct `name`) 返回去重后数量 $count =$this ->testDAO ->count ('name' );// max(`id`) $max =$this ->testDAO ->max ('id' );// min(`id`) $min =$this ->testDAO ->min ('id' );// avg(`id`) $avg =$this ->testDAO ->avg ('id' );// sum(`id`) $sum =$this ->testDAO ->sum ('id' );
这里运算都为简单运算,需要用到复合运算或者多表运算时,建议使用addition
方法
==============v2.8更新分割线=============
Biny2.8.1之后添加了pluck
(快速拉取列表)具体用法如下:
// ['test1', 'test2', 'test3'] $list =$this ->testDAO ->filter (array ('type' =>5))->pluck ('name' );// 同样也可以运用到多联表中, $filter =$this ->testDAO ->join ($this ->projectDAO ,array ('projectId' =>'id' ))- ->
filter (array (array ('type' =>5),- ));
// 如果所使用字段在多表中重复会报错 $list =$filter ->pluck ('name' );// 如果所使用字段在多表中重复出现需要指明所属的表 $list =$filter ->pluck (array ('project' =>'name' ));
Biny2.8.1之后还添加了paginate
(自动分页)方法,具体用法如下:
// 返回一个以10条数据为一组的二维数组 $results =$this ->testDAO ->filter (array ('type' =>5))->paginate (10);// 同样也可以运用到多联表中, $filter =$this ->testDAO ->join ($this ->projectDAO ,array ('projectId' =>'id' ))- ->
filter (array (array ('type' =>5),- ));
// 第二个参数默认为null,非null返回第n+1页(计数从0开始)的内容 // 第三个参数等同于fields的用法,为筛选的字段集合 $results =$filter ->paginate (10, 3,array (array ('project' =>'id' ,'name' ));
Biny2.9.0之后还添加了tables
检索所有表方法 和 columns
获取所有列信息方法:
// 获取DB实例中所有表名,参数true则返回表详细数据 $tables =$this ->userDAO ->tables ();$tableDetail =$this ->userDAO ->tables (true );// 获取user表列名 / 列详情 $columns =$this ->userDAO ->columns ();$columnDetail =$this ->userDAO ->columns (true );