web-dev-qa-db-fra.com

SELECT avec LIMIT dans Codeigniter

J'ai un site à développer dans Codeigniter, et dans mon modèle j'ai une fonction comme celle-ci:

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

Et si dans mon contrôleur j'appelle la fonction sans limite et start ne retourne pas le résultat comme ceci:

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

Au lieu de cela, si je fixe une limite et commence à travailler! Si la limite et le début sont nuls, pourquoi ne retourne pas le résultat? Je ne veux pas créer une deuxième fonction ou un contrôle si limit et start sont nuls. Comment puis-je résoudre ce problème lorsque limit et start sont nuls sans contrôle ni deuxième fonction pour rendre le code utile et plus efficace?

14

Essaye ça...

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;     
}
23
Deepu

Pour les autres visiteurs:

// 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);
6
vivoconunxino