codeigniter指定限制为NULL在最新的CI版本2.1.2中不起作用

时间:2012-09-11 08:12:58

标签: php codeigniter limit codeigniter-2

我在我的一个Codeigniter模型中有以下 get_authors_list 功能

function get_authors_list($limit,$offset){
    $data = array();

    $this->db->select('*')->from('authors')->limit($limit,$offset)->order_by('id','desc');

    $query = $this->db->get();         
    if ($query-> num_rows() >  0){
      $data = $query->result_array();
    }
    return $data;
    $q->free_result();
  }

在升级到Codeigniter 2.1.2之前,我使用从我的控制器调用此方法

$data['authors'] = $this->author_model->get_authors_list(NULL, 0)

并且它按预期工作但在升级到codeigniter版本2.1.2之后它不起作用,为了使它工作我必须在我的函数调用中指定限制如下

$data['authors'] = $this->author_model->get_authors_list(50, 0)

指定NULL限制不起作用,为什么?我在这里做错了吗? 我正确地遵循了Codeigniter的升级说明,但这是我没想到的一些副作用。

欢迎任何解释。 谢谢!

2 个答案:

答案 0 :(得分:4)

是的,它不起作用,因为在latest version of CodeIgniter文件的System/Database/DB_active_rec.php中,他们对limit函数中的一行进行了更改 早期的版本:

$this->ar_limit = $value;

现在,

$this->ar_limit = (int) $value;

因此,(int) null正在转换为0您没有获得任何结果

所以我认为你必须完全删除limit电话。为什么还需要将其设置为null

答案 1 :(得分:3)

它不再起作用了。源代码发生了变化,现在忽略NULL值。请参阅此commit