获取总条数

  1. $this->getTotalNums()
  2. //自动获取主键,相当于$this->mapDbAndTable()->count('主键');
  1. $this->getTotalNums('uid');
  2. //当前操作的表无主键手动传入字段名,相当于$this->mapDbAndTable()->count('uid');
  1. $this->getTotalNums('uid', 'users');
  2. //当前操作的表无主键手动传入字段名,手动传入表名 v2.6.2起可用
  3. //相当于$this->db()->table('users')->count('uid');
  1. $this->getTotalNums('uid', 'users', 'u_');
  2. //手动传入表名,且特殊指定表前缀v2.6.5起可用
  3. //相当于$this->db()->table('users', 'u_')->count('uid');

上面两条都是没带条件的获取总数,如果带条件的时候不想写select()想直接用getTotalNums(),也可以这么操作:

  1. //在xxModel中
  2. $this->db()->where('id', 1)->whereGt('status', 1);//会将where条件注入到orm
  3. $this->getTotalNums();//调用Model中的getTotalNums() orm会使用上面注入的条件
  4. //v2.7.3起,在model里还支持这么写。框架会自动处理请求的是db类的方法还是model的方法。如:
  5. $this->where('id', 1)->whereGt('status', 1)//这边操作的是orm下db类的方法
  6. ->getTotalNums(); //这边操作的是model的方法
  7. //要注意的是在Model中的getTotalNums()会自动调用$this->db()->table所以在设置where条件时不能再调用$this->db()->table()。否则会造成sql出错。
若未传入表名(v2.6.2以下版本)。这边会自动判断当前Model中有无$table 属性,若有则自动提取$table属性为要操作的table,若没有则自动获取model名为表名如 UserModel 对应的表名为 pre_user,建议在XxxModel中声明$table属性。若没传入字段名框架会自动获取表的主键名称,如线上环境有修改主键名请清空相应缓存 点击查看详情说明。若没传入前缀,框架会自动获取当前Model有无$tablePrefix属性,若有则自动提取,若没有则使用配置文件中数据库相关配置里配置的表前缀,建议在当前模型的表前缀与配置中数据库相关配置里配置的表前缀不一样的时候在当前model中声明$tablePrefix属性

原文: http://doc.cmlphp.com/devintro/model/mysql/fastmethod/gettotalnums.html