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中文網其他相關文章!