ztkx 发表于 2009-2-18 01:25:32

链式方法与count_all

chain非常好用,可是似乎缺了一个count, 我在写一个分页,需要对某一类的文章进行分页列表,count_all和count_all_result只能对整个表操作,要是select->where
然后 query = $this->db->get()
然后再num_rows(),代码似乎太麻烦了,

各位以为呢

neversaylate 发表于 2009-2-18 09:57:17

可以自己写个扩展。

Hex 发表于 2009-2-18 10:50:42

首先说这个和链式方法无关,取带条件的记录总数和取实际的记录是要分两步的。
先取记录数:
$this->db->select('count(*) as count')->from('mytable')->where('id', $id);
$query = $this->db->get();
$row = $query->row_array();
echo $row['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'];
}

hnmazda 发表于 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();
如何呢?

ztkx 发表于 2009-2-18 12:37:02


$this->db->select('count(*) as count')->from('mytable')->where('id', $id);
$query = $this->db->get();
这两句可以一句完成么

Hex 发表于 2009-2-18 13:29:06

5# ztkx


应该不可以,为什么要放到一句?那样编码不是很好。

neversaylate 发表于 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 http://codeigniter.org.cn/forums/images/common/back.gif
第一句是构建sql语句,第二句是执行上面构建的sql,我认为不能合成一个。

tiana 发表于 2009-2-18 16:59:02

最好扩展一下常用的一些功能,减少重复的工作。
页: [1]
查看完整版本: 链式方法与count_all