基础查询

DAO提供了queryfind等基本查询方式,使用也相当简单

  1. // testAction.php
  2. namespace app\controller;
  3. /**
  4. * DAO 或者 Service 会自动映射 生成对应类的单例
  5. * @property \app\dao\testDAO $testDAO
  6. */
  7. class testAction extends baseAction
  8. {
  9. public function action_index()
  10. {
  11. // 返回 testDAO所对应表的全部内容 格式为二维数组
  12. [['id'=>1, 'name'=>'xx', 'type'=>2], ['id'=>2, 'name'=>'yy', 'type'=>3]]
  13. $data = $this->testDAO->query();
  14. // 第一个参数为返回的字段 [['id'=>1, 'name'=>'xx'], ['id'=>2, 'name'=>'yy']]
  15. $data = $this->testDAO->query(array('id', 'name'));
  16. // 第二个参数返回键值,会自动去重 [1 => ['id'=>1, 'name'=>'xx'], 2 => ['id'=>2, 'name'=>'yy']]
  17. $data = $this->testDAO->query(array('id', 'name'), 'id');
  18.  
  19. // 返回 表第一条数据 格式为一维 ['id'=>1, 'name'=>'xx', 'type'=>2]
  20. $data = $this->testDAO->find();
  21. // 参数为返回的字段名 可以为字符串或者数组 ['name'=>'xx']
  22. $data = $this->testDAO->find('name');
  23. }
  24. }

同时还支持countmaxsumminavg等基本运算,count带参数即为参数去重后数量

  1. // count(*) 返回数量
  2. $count = $this->testDAO->count();
  3. // count(distinct `name`) 返回去重后数量
  4. $count = $this->testDAO->count('name');
  5. // max(`id`)
  6. $max = $this->testDAO->max('id');
  7. // min(`id`)
  8. $min = $this->testDAO->min('id');
  9. // avg(`id`)
  10. $avg = $this->testDAO->avg('id');
  11. // sum(`id`)
  12. $sum = $this->testDAO->sum('id');

这里运算都为简单运算,需要用到复合运算或者多表运算时,建议使用addition方法

==============v2.8更新分割线=============

Biny2.8.1之后添加了pluck(快速拉取列表)具体用法如下:

  1. // ['test1', 'test2', 'test3']
  2. $list = $this->testDAO->filter(array('type'=>5))->pluck('name');
  3. // 同样也可以运用到多联表中,
  4. $filter = $this->testDAO->join($this->projectDAO, array('projectId'=>'id'))
  5. ->filter(array(
  6. array('type'=>5),
  7. ));
  8. // 如果所使用字段在多表中重复会报错
  9. $list = $filter->pluck('name');
  10. // 如果所使用字段在多表中重复出现需要指明所属的表
  11. $list = $filter->pluck(array('project'=>'name'));

Biny2.8.1之后还添加了paginate(自动分页)方法,具体用法如下:

  1. // 返回一个以10条数据为一组的二维数组
  2. $results = $this->testDAO->filter(array('type'=>5))->paginate(10);
  3. // 同样也可以运用到多联表中,
  4. $filter = $this->testDAO->join($this->projectDAO, array('projectId'=>'id'))
  5. ->filter(array(
  6. array('type'=>5),
  7. ));
  8. // 第二个参数默认为null,非null返回第n+1页(计数从0开始)的内容
  9. // 第三个参数等同于fields的用法,为筛选的字段集合
  10. $results = $filter->paginate(10, 3, array(array('project'=>'id', 'name'));

Biny2.9.0之后还添加了tables检索所有表方法 和 columns获取所有列信息方法:

  1. // 获取DB实例中所有表名,参数true则返回表详细数据
  2. $tables = $this->userDAO->tables();
  3. $tableDetail = $this->userDAO->tables(true);
  4. // 获取user表列名 / 列详情
  5. $columns = $this->userDAO->columns();
  6. $columnDetail = $this->userDAO->columns(true);