Codeigniter ActiveRecord:加入反引号 [英] Codeigniter ActiveRecord: join backticking
问题描述
我有一个简单的问题:如何使用 CodeIgniter 的 ActiveRecord join
函数?我想要这个:
I've a simple question: how can I use CodeIgniter's ActiveRecord join
function? I want this:
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
将在反引号之间.
But if I use $this->db->join(cimke,"mk_terem.id_kicsoda=5 AND mk_terem.id_target=cimke.id_cimke")
, the value 5
will be between backticks.
我该怎么做?
更新
我想要什么?如果 mk_terem.id_kicsoda
是 1,那么我想要 tanar.nev
而当 mk_terem.id_kicsoda
是 5 时,我想要 cimke.nev
.
What I want? If mk_terem.id_kicsoda
is 1, then I want tanar.nev
and when mk_terem.id_kicsoda
is 5, I want cimke.nev
.
完整的 SQL 查询:
The full SQL-query:
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)
推荐答案
只是一个简单的解决方法,丑陋,不优雅,但在这种情况下有效:
Only a simple workaround, ugly, not elegant, but it works in this case:
$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;
如果有人知道更好,请展示出来!
If anybody knows better please show it!
这篇关于Codeigniter ActiveRecord:加入反引号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!