Codeigniter 查询生成器无法正常工作

Codeigniter query builder does not work correctly

有人可以解释一下这些代码之间的区别吗? 因为查询生成器没有给出正确的结果,但是另一个查询给出了正确的结果。

我看不到有什么区别?

$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');

给出正确结果的查询

SELECT m.*,c.COUNTRY_NAME FROM members m LEFT JOIN country c ON c.COUNTRY_ALPHA2_CODE = m.location WHERE c.LANG = "EN"; 

试试这个:

$this->db->select('m.*');
$this->db->select('c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');

要使用 CI 生成完整的查询字符串,您需要添加以下行:

$query=$db->get(); 你的方法。

完整代码如下所示:

$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','c.COUNTRY_ALPHA2_CODE = m.location', 'left');
$this->db->where('c.LANG', 'EN');
$query=$db->get();

在此行之后,您可以检查 SQL 字符串输出:

echo $this->db->query();

您从这里继续 Generating Query Results 征求您的意见

回复评论:

'$this->db->where('c.LANG', 'EN');' does not work. this line return always first language in db

您需要将语言查询放入连接中:

$this->db->select('m.*,c.COUNTRY_NAME');
$this->db->from('members m');
$this->db->join('country c','(c.COUNTRY_ALPHA2_CODE = m.location AND c.LANG=\'EN\')', 'left');
$query=$db->get();