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

[数据库] Active Record 类 相关问题

[复制链接]
发表于 2010-6-9 17:50:00 | 显示全部楼层 |阅读模式
PHP复制代码
$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()执行过后前面指定的
表名,查询条件好像都不在了,在下边又得重新指定
要真的这个样子的话,有没得别的哈子办法,我只想指定一次件条
谢谢
 楼主| 发表于 2010-6-9 18:07:29 | 显示全部楼层
咋个没人呢?
发表于 2010-6-9 19:23:52 | 显示全部楼层
本帖最后由 lcnphp 于 2010-6-9 19:30 编辑

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

QQ截图未命名.jpg
发表于 2010-6-9 19:56:08 | 显示全部楼层
使用类的clone啊
PHP复制代码
 
        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函数分开使用,因为两种确实是不可以共存的
发表于 2010-6-9 19:59:53 | 显示全部楼层
这里涉及到php类的引用传递,在php4中实例化一个类也就copy了一份,但是在php5中需要用clone魔术方法来实现拷贝,而count_all_results函数会改变sql语句的连续性,使用count_all_results后get函数得到的就是select * form talble_name了。

本版积分规则