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中文网其他相关文章!