ВЫБЕРИТЕ с ОГРАНИЧЕНИЕМ в Codeigniter


У меня есть сайт, разработанный в Codeigniter, и в моей модели у меня есть такая функция:

function nationList($limit=null, $start=null) {
    if ($this->session->userdata('language')=="it")
    $this->db->select('nation.id, nation.name_it as name');
    if ($this->session->userdata('language')=="en")
    $this->db->select('nation.id, nation.name_en as name');
    $this->db->from('nation');
    $this->db->order_by("name", "asc");
    $this->db->limit($limit, $start);
    $query = $this->db->get();
    $nation = array();
    foreach ($query->result() as $row)
        array_push($nation, $row);

    return $nation;     
}

И если в моем контроллере я вызываю функцию без ограничений, и запуск не возвращает такой результат:

$data["nationlist"] = $this->Nation_model->nationList();

Вместо этого, если я установлю предел и начну работать! Если limit и start равны нулю, почему не возвращается результат? Я не хочу создавать вторую функцию или элемент управления, если limit и start равны нулю. Как я могу решить эту проблему, когда limit и start равны нулю без элемента управления или секунды функция, позволяющая сделать код полезным и более эффективным?

Author: Alessandro Minoccheri, 2013-01-09

2 answers

Попробуйте это...

function nationList($limit=null, $start=null) {
    if ($this->session->userdata('language')=="it")
        $this->db->select('nation.id, nation.name_it as name');

    if ($this->session->userdata('language')=="en")
        $this->db->select('nation.id, nation.name_en as name');

    $this->db->from('nation');
    $this->db->order_by("name", "asc");

    if($limit!='' && $start!=''){
       $this->db->limit($limit, $start);
    }
    $query  = $this->db->get();

    $nation = array();
    foreach ($query->result() as $row)
        array_push($nation, $row);

    return $nation;     
}
 20
Author: 웃웃웃웃웃, 2016-08-12 11:29:41

Для дальнейших посетителей:

// Executes: SELECT * FROM mytable LIMIT 10 OFFSET 20
// get([$table = ''[, $limit = NULL[, $offset = NULL]]])
$query = $this->db->get('mytable', 10, 20);

// get_where sample, 
$query = $this->db->get_where('mytable', array('id' => $id), 10, 20);

// Produces: LIMIT 10
$this->db->limit(10);  

// Produces: LIMIT 10 OFFSET 20
// limit($value[, $offset = 0])
$this->db->limit(10, 20);
 1
Author: vivoconunxino, 2018-01-31 12:38:06