Активные записи CodeIgniter в настоящее время не поддерживают подзапросы, однако я использую следующий подход:
#Create where clause
$this->db->select('id_cer');
$this->db->from('revokace');
$where_clause = $this->db->_compile_select();
$this->db->_reset_select();
#Create main query
$this->db->select('*');
$this->db->from('certs');
$this->db->where("`id` NOT IN ($where_clause)", NULL, FALSE);
_compile_select () и _reset_select () - два недокументированных (AFAIK) метода, которые компилируют запрос и возвращаютSQL (без запуска) и сбросить запрос.
В главном запросе FALSE в предложении where говорит codeigniter не избегать запроса (или добавлять обратные метки и т. Д.), Что может привести к путанице в запросе.(NULL просто потому, что в предложении where есть необязательный второй параметр, который мы не используем)
Однако вы должны знать, что _compile_select () и _reset_select () не являются документированными методами, возможно, что есть функциональность (илисуществование) может измениться в будущих выпусках.