php - 从原始 sql 更改为 codeigniters 事件类

标签 php mysql activerecord codeigniter

我有这个

SELECT *
FROM categoryTable
WHERE categoryId NOT
IN (

SELECT categoryId
FROM userMenuTable
WHERE cookieId = 'bang4b544417a41b6'
)

但我希望它使用 codeigniters 事件记录类,所以使用

$this->db

语法,我希望有人能帮我转换这个?

最佳答案

两种方法:

纯 SQL:

$this->db->query('SELECT * FROM categoryTable WHERE categoryId NOT IN (
    SELECT categoryId FROM userMenuTable WHERE cookieId = "bang4b544417a41b6"
)');

Active Record + Plain WHERE SQL

$this->db->where('categoryId', 'NOT IN (
    SELECT categoryId FROM userMenuTable WHERE cookieId = "bang4b544417a41b6"
)', FALSE);

$this->db->get('categoryTable');

您可以通过在 db->where(); 中添加 FALSE 作为第三个参数,将纯 SQL 放入 WHERE 子句中。

很遗憾没有比这更简洁的方法了,但 Active Record 仅适用于具有连接、订单、限制等的简单查询。

关于php - 从原始 sql 更改为 codeigniters 事件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2086891/

相关文章:

php - PDO 是否处理 sql 函数?

postgresql - 我从查询 COUNT ('e.id' ) 或 COUNT(e.id) 得到不同的结果

php - 获取此 PHP 错误 : fputcsv() expects parameter 2 to be array

php - 将字符串拆分为 2 个字母

mysql innodb事务并发

php - 如何在php中维护显示顺序字段

ruby-on-rails - 如何确定完成 Rails 查询所需的时间

ruby-on-rails - 按正则表达式模式搜索 ActiveRecord

php - 从 1 个表单向数据库中插入多行

mysql - 所有数据未从 CSV 加载到 MYSQL