Maison >développement back-end >tutoriel php >Comment implémenter le filtrage de sous-requêtes dans CodeIgniter à l'aide d'Active Record ou de la bibliothèque de sous-requêtes ?
Filtrage de sous-requêtes dans CodeIgniter : une approche de création de requêtes
La tâche à accomplir consiste à traduire la requête SQL suivante dans la syntaxe d'enregistrement actif de CodeIgniter :
SELECT * FROM certs WHERE id NOT IN (SELECT id_cer FROM revokace);
Cette requête récupère toutes les lignes de la table "certs" où le La colonne "id" n'est pas présente dans la sous-requête qui sélectionne "id_cer" dans la table "revokace".
Implémentation d'enregistrement actif
Le générateur de requêtes de CodeIgniter fournit une solution simple :
$this->db->select('*') ->from('certs') ->where('`id` NOT IN (SELECT `id_cer` FROM `revokace`)', NULL, FALSE);
La méthode "where()" accepte une chaîne SQL brute comme premier argument, nous permettant d'incorporer le sous-requête directement dans la requête principale. Les deuxième et troisième arguments (NULL et FALSE) empêchent CodeIgniter d'échapper à la sous-requête, ce qui autrement interromprait la requête.
Extension de la bibliothèque de sous-requêtes
Vous pouvez également envisager d'utiliser l'option Bibliothèque de sous-requêtes :
$this->db->select('*') ->from('certs') ->subquery('where_in', function($subquery) { $subquery->select('id_cer') ->from('revokace'); }, 'id', FALSE);
Cette technique fournit une solution plus concise et réutilisable pour incorporer des sous-requêtes dans les requêtes CodeIgniter.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!