首页  >  文章  >  后端开发  >  如何使用 Active Record 或子查询库在 CodeIgniter 中实现子查询过滤?

如何使用 Active Record 或子查询库在 CodeIgniter 中实现子查询过滤?

Barbara Streisand
Barbara Streisand原创
2024-11-22 03:06:09699浏览

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