Два способа сделать это:
Простой SQL:
$this->db->query('SELECT * FROM categoryTable WHERE categoryId NOT IN (
SELECT categoryId FROM userMenuTable WHERE cookieId = "bang4b544417a41b6"
)');
Активная запись + Простой ГДЕ SQL
$this->db->where('categoryId', 'NOT IN (
SELECT categoryId FROM userMenuTable WHERE cookieId = "bang4b544417a41b6"
)', FALSE);
$this->db->get('categoryTable');
Вы можете поместить простой SQL в предложение WHERE, добавив FALSE в качестве третьего аргумента в db-> where ();
Жаль, что для этого нет ничего лучше, но Active Record предназначен только для простых запросов с объединениями, заказами, лимитами и т. Д.