CodeIgniter限制问题

时间:2011-05-18 19:46:52

标签: php codeigniter

我有一个LoteModel:

public function selecionar($where = NULL, $limit = NULL, $order_by = NULL) {
            if(!is_null($where)) {
                $this->db->where($where);
            }
            if(!is_null($limit)) {
                $this->db->limit($limit);
            }
            if(!is_null($order_by)) {
                $this->db->order_by($order_by);
            }

            return $this->db->get(_LOTE_);//_LOTE_ is a constant for my table name
    }

我称之为:

$config['per_page'] = '5';

$limite = $config['per_page'].','.$this->uri->segment(3); //the segment is ok, I receive it

$lotes = $this->LoteModel->selecionar(array('quadra_id'=>$quadra_id, 'lote_status'=>1), $limite, 'lote_endereco'); 

我已检查该查询的SQL结果:

SELECT * FROM (`realestate_lote`) WHERE `quadra_id` = '1' AND `lote_status` = 1 ORDER BY `lote_endereco` 

问题是,它没有生成我的LIMIT,它只有在我将它添加到LoteModel方法时才有效。

我正在进行分页。

提前感谢您的任何帮助=)

1 个答案:

答案 0 :(得分:4)

您不能将类似“5,1”的字符串传递给CI的ActiveRecord限制功能。 该功能需要两个参数。

将限制字符串拆分为“,”并传递两个值,如下例所示。

$limit = explode(',', $limit);
$this->db->limit($limit[0], $limit[1]);

希望这会有所帮助......