我有一个简单的问题:如何使用CodeIgniter的ActiveRecord join函数?我要这个:
join
LEFT JOIN cimke ON (mk_terem.id_kicsoda=5 AND mk_terem.id_target=cimke.id_cimke) LEFT JOIN tanar ON (mk_terem.id_kicsoda=1 AND mk_terem.id_target=tanar.id_tanar)
但是,如果使用$this->db->join(cimke,"mk_terem.id_kicsoda=5 AND mk_terem.id_target=cimke.id_cimke"),则该值5将介于反引号之间。
$this->db->join(cimke,"mk_terem.id_kicsoda=5 AND mk_terem.id_target=cimke.id_cimke")
5
我怎样才能做到这一点?
更新
我想要的是?如果mk_terem.id_kicsoda为1,那么我想要,tanar.nev而当 mk_terem.id_kicsoda为5时,我想要cimke.nev。
mk_terem.id_kicsoda
tanar.nev
cimke.nev
完整的SQL查询:
SELECT terem.nev terem_nev, elem_tipus.nev tipus_nev, (IFNULL(cimke.nev,tanar.nev)) nev FROM mk_terem LEFT JOIN terem ON mk_terem.id_terem=terem.id_terem LEFT JOIN cimke ON (mk_terem.id_kicsoda=5 AND mk_terem.id_target=cimke.id_cimke) LEFT JOIN tanar ON (mk_terem.id_kicsoda=1 AND mk_terem.id_target=tanar.id_tanar) LEFT JOIN elem_tipus ON (mk_terem.id_kicsoda=elem_tipus.id_kicsoda)
只有一个简单的解决方法,丑陋,不够优雅,但是在这种情况下它可以工作:
$original_reserved = $this->db->_reserved_identifiers; $this->db->_reserved_identifiers[] = 5; $this->db->_reserved_identifiers[] = 1; // or any other values $this->db->join('with critical values and conditions'); // some db-stuff $this->db->_reserved_identifiers = $original_reserved;
如果有人知道更好,请显示出来!