18

私は 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;     
}

そして、コントローラーで関数を無制限に呼び出した場合、 start は次のような結果を返しません。

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

代わりに、制限を設定して動作を開始すると! limit と start が null の場合、結果が返されないのはなぜですか? limit と start が null の場合、2 番目の関数またはコントロールを作成したくありません。limit と start が null の場合、コントロールや 2 番目の関数を使用せずにコードを有効にして効率的にする方法を教えてください。

4

3 に答える 3

29

これを試して...

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;     
}
于 2013-01-09T08:43:40.283 に答える