scsmxzp 发表于 2010-6-9 17:50:00

Active Record 类 相关问题

$this->load->database();
$this->db->select('user_name');
$this->db->from('user');
$this->db->like('user_name', 'test');
$nums = $this->db->count_all_results();
$this->db->order_by('user_name','asc');
$this->db->limit($page['page_size'], $page['pageStart']);
$result = $this->db->get();
$data['table_data'] = $result->result_array();

我自己写了一个分页的类
要查询出当前满足条件的记录总数
用的是$nums = $this->db->count_all_results();这句
接下来要查询出满足条件指定范围的数据
结果它说没有可用的表,给我感觉好像是
$this->db->count_all_results()执行过后前面指定的
表名,查询条件好像都不在了,在下边又得重新指定
要真的这个样子的话,有没得别的哈子办法,我只想指定一次件条
谢谢

scsmxzp 发表于 2010-6-9 18:07:29

咋个没人呢?

lcnphp 发表于 2010-6-9 19:23:52

本帖最后由 lcnphp 于 2010-6-9 19:30 编辑

你可以把查询条件和查询总数分离出来发,分别写一个函数。

songah 发表于 2010-6-9 19:56:08

使用类的clone啊

        function __clone()
        {
                foreach ($this as $key => $value)
                {
                        if (is_object($value))
                        {
                                $this->{$key} = clone($value);
                        }
                }
        }

        function get_clone()
        {
                return clone($this);
        }

clone可以放在模型中,一般数据库操作都在模型中好吧,然后copy一份model,把count_all_results函数和get函数分开使用,因为两种确实是不可以共存的

songah 发表于 2010-6-9 19:59:53

这里涉及到php类的引用传递,在php4中实例化一个类也就copy了一份,但是在php5中需要用clone魔术方法来实现拷贝,而count_all_results函数会改变sql语句的连续性,使用count_all_results后get函数得到的就是select * form talble_name了。
页: [1]
查看完整版本: Active Record 类 相关问题