Recherche…


Sélection de données

Les fonctions suivantes vous permettent de générer des instructions SQL SELECT.

$this->db->get()

Cela exécute la requête de sélection et renvoie le résultat. Peut être utilisé seul pour récupérer tous les enregistrements d'une table:

$query = $this->db->get('tablename');  // Produces: SELECT * FROM tablename

Les deuxième et troisième paramètres vous permettent de définir une clause de limite et de décalage:

$query = $this->db->get('tablename', 10, 20);

// Executes: SELECT * FROM tablename LIMIT 20, 10
// (in MySQL. Other databases have slightly different syntax)

Sélection de données

Sélection de données avec condition

$query  = $this->db->select('*')
                   ->from('table_name')
                   ->where('column_name', $value) // Condition 
                   ->get();
return $query->result();

Sélection de données avec plusieurs conditions

$conditions = array('column_name_1' => $value_1, 'column_name_2' => $value_2);
$query  = $this->db->select('*')
                   ->from('table_name')
                   ->where($conditions) // Conditions
                   ->get();
return $query->result();

Sélectionner des données avec condition et limite

$query  = $this->db->select('*')
                   ->from('table_name')
                   ->where('column_name', $value) // Condition
                   ->limit(10) // Maximum 10 rows
                   ->get();
return $query->result();

Sélectionner des données avec condition, lignes maximum et ordre décroissant

$query  = $this->db->select('*')
                   ->from('table_name')
                   ->where('column_name', $value) // Condition
                   ->limit(10) // Maximum 10 rows 
                   ->order_by('id','DESC') // Order data descending 
                   ->get();
return $query->result();

Sélection de données avec un deuxième paramètre facultatif

Habituellement, nous n'utilisons pas le second paramètre dans select([$select = '*'[, $escape = NULL]]) dans CodeIgniter. Si vous le définissez sur FALSE, CodeIgniter n'essaiera pas de protéger vos noms de champ ou de table.

Dans l'exemple suivant, nous allons sélectionner le champ de type datetime en le formatant à l'aide de sql query et le définir sur FALSE (ce faisant, nous allons demander à CI de ne pas échapper automatiquement à la requête).

public function getUserInfo($id)
{
    $this->db->select('BaseTbl.id, BaseTbl.name, DATE_FORMAT(BaseTbl.createdDtm, "%d-%m-%Y") AS createdDtm', FALSE); // FALSE is the second optional parameter
    $this->db->from('tbl_users as BaseTbl');
    $this->db->where('isDeleted', 0);
    $this->db->where('BaseTbl.id', $id);
    $query = $this->db->get();
            
    return $query->result();
}

Si nous ne le définissons pas sur FALSE , cela échappera automatiquement à la requête.

Joindre des tables à l'aide de Query Builder

Parfois, nous devons joindre plusieurs tables pour obtenir des données agrégées en retour. Voici comment nous pouvons obtenir la même chose en utilisant CodeIgniter Query Builder / Active Records.

public function getStudentInfo($studentid){
    $query = $this->db->select("st.id, st.name, st.class, mk.maths, mk.science")
               ->from("students as st")
               ->join("marks as mk", "mk.student_id = st.id", "inner")
               ->where("st.id", $studentId)
               ->get();
    return $query->result();        
}

Ici, nous utilisons join () pour joindre plusieurs tables et nous pouvons changer le type de jointure en 3ème paramètre comme "inner", "left", "right" etc.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow