从原始sql更改为codeigniters活动类

Udd*_*ers 2 php mysql activerecord codeigniter

我有这个

SELECT *
FROM categoryTable
WHERE categoryId NOT
IN (

SELECT categoryId
FROM userMenuTable
WHERE cookieId = 'bang4b544417a41b6'
)
Run Code Online (Sandbox Code Playgroud)

但我希望它使用codeigniters活动记录类,所以使用

$this->db
Run Code Online (Sandbox Code Playgroud)

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

Phi*_*eon 6

两种方法:

纯SQL:

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

Active Record + Plain WHERE SQL

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

$this->db->get('categoryTable');
Run Code Online (Sandbox Code Playgroud)

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

遗憾的是,没有什么可以做到这一点,但Active Record仅用于具有连接,订单,限制等的简单查询.