CodeIgniter でのサブクエリ フィルタリング: クエリ ビルダーのアプローチ
当面のタスクは、次の SQL クエリを CodeIgniter のアクティブ レコード構文に変換することです。
SELECT * FROM certs WHERE id NOT IN (SELECT id_cer FROM revokace);
このクエリはすべてを取得します「revokace」テーブルから「id_cer」を選択するサブクエリに「id」列が存在しない「certs」テーブルの行。
アクティブ レコードの実装
CodeIgniter のクエリ ビルダーは、次のような簡単なソリューションを提供します。
$this->db->select('*') ->from('certs') ->where('`id` NOT IN (SELECT `id_cer` FROM `revokace`)', NULL, FALSE);
「where()」メソッドは生の SQL 文字列を最初の引数として受け入れ、サブクエリをメイン クエリに直接組み込むことができます。 2 番目と 3 番目の引数 (NULL と FALSE) は、CodeIgniter がサブクエリをエスケープするのを防ぎます。エスケープしないとクエリが中断されてしまいます。
サブクエリ ライブラリ拡張
あるいは、サブクエリ ライブラリ:
$this->db->select('*') ->from('certs') ->subquery('where_in', function($subquery) { $subquery->select('id_cer') ->from('revokace'); }, 'id', FALSE);
この手法は、より簡潔で、サブクエリを CodeIgniter クエリに組み込むための再利用可能なソリューション。
以上がActive Record または Subquery Library を使用して CodeIgniter でサブクエリ フィルタリングを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。