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 ?

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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-22 03:06:09776parcourir

How to Implement Subquery Filtering in CodeIgniter using Active Record or the Subquery Library?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn