用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4396|回复: 7
收起左侧

链式方法与count_all

[复制链接]
发表于 2009-2-18 01:25:32 | 显示全部楼层 |阅读模式
chain非常好用,可是似乎缺了一个count, 我在写一个分页,需要对某一类的文章进行分页列表,count_all和count_all_result只能对整个表操作,要是select->where
然后 query = $this->db->get()
然后再num_rows(),代码似乎太麻烦了,

各位以为呢
发表于 2009-2-18 09:57:17 | 显示全部楼层
可以自己写个扩展。
发表于 2009-2-18 10:50:42 | 显示全部楼层
首先说这个和链式方法无关,取带条件的记录总数和取实际的记录是要分两步的。
先取记录数:
PHP复制代码
$this->db->select('count(*) as count')->from('mytable')->where('id', $id);
$query = $this->db->get();
$row = $query->row_array();
echo $row['count']; // 这就是带条件的记录总数
 
复制代码

然后取真正的记录:
PHP复制代码
$this->db->select('*')->from('mytable')->where('id', $id)->limit(10, 20);
$query = $this->db->get();
foreach ($query->result_array() as $row)
{
   echo $row['title'];
   echo $row['name'];
   echo $row['body'];
}
 
复制代码
发表于 2009-2-18 12:18:24 | 显示全部楼层
如果能有一个封装好配合limit()方法的match_rows()方法就好了,不需要手工再select count(*)
$this->db->select('*')->from('mytable')->where('id', $id)->limit(10, 20);
$query = $this->db->get();
foreach ($query->result_array() as $row)
{
   echo $row['title'];
   echo $row['name'];
   echo $row['body'];
}
$count = $this->db->match_rows();
如何呢?
 楼主| 发表于 2009-2-18 12:37:02 | 显示全部楼层

  1. $this->db->select('count(*) as count')->from('mytable')->where('id', $id);
  2. $query = $this->db->get();
复制代码
这两句可以一句完成么
发表于 2009-2-18 13:29:06 | 显示全部楼层
5# ztkx


应该不可以,为什么要放到一句?那样编码不是很好。
发表于 2009-2-18 13:31:39 | 显示全部楼层
$this->db->select('count(*) as count')->from('mytable')->where('id', $id);
$query = $this->db->get();
这两句可以一句完成么
ztkx 发表于 2009-2-18 12:37

第一句是构建sql语句,第二句是执行上面构建的sql,我认为不能合成一个。
发表于 2009-2-18 16:59:02 | 显示全部楼层
最好扩展一下常用的一些功能,减少重复的工作。

本版积分规则