首頁 >後端開發 >php教程 >如何使用 Active Record 或子查詢庫在 CodeIgniter 中實現子查詢過濾?

如何使用 Active Record 或子查詢庫在 CodeIgniter 中實現子查詢過濾?

Barbara Streisand
Barbara Streisand原創
2024-11-22 03:06:09771瀏覽

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

CodeIgniter 中的子查詢過濾:查詢產生器方法

目前的任務是將下列SQL 查詢轉換為CodeIgniter 的活動語法記錄:

SELECT *
FROM certs
WHERE id NOT IN (SELECT id_cer FROM revokace);

此查詢從「certs」擷取所有行從「revokace」表中選擇「id_cer」的子查詢中不存在「id」列的表。

Active Record 實作

CodeIgniter 的查詢產生器提供一個簡單的解決方案:

$this->db->select('*')
         ->from('certs')
         ->where('`id` NOT IN (SELECT `id_cer` FROM `revokace`)', NULL, FALSE);

「where()」方法接受原始SQL 字串作為第一個參數,讓我們可以將子查詢直接合併到主查詢中。第二和第三個參數(NULL 和 FALSE)可防止 CodeIgniter 轉義子查詢,否則會破壞查詢。

子查詢庫擴展

或者,考慮使用子查詢庫:

$this->db->select('*')
         ->from('certs')
         ->subquery('where_in', function($subquery) {
             $subquery->select('id_cer')
                      ->from('revokace');
         }, 'id', FALSE);

該技術為合併提供了更簡潔且可重用的解決方案CodeIgniter 查詢的子查詢。

以上是如何使用 Active Record 或子查詢庫在 CodeIgniter 中實現子查詢過濾?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn