Codeigniter ActiveRecord:join backticking [英] Codeigniter ActiveRecord: join backticking

查看:115
本文介绍了Codeigniter ActiveRecord:join backticking的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的问题:如何使用CodeIgniter的ActiveRecord join function?我想要这个:

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),值<$

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.

如何做到这一点?

UPDATE

我想要什么?如果 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查询:

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:join backticking的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆