首页 > 解决方案 > Codeigniter 查询生成器无法正常工作

问题描述

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

我看不到的区别是什么?

$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"; 

标签: phpcodeignitercodeigniter-query-builder

解决方案


要使用 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();

从这里您继续为您的视图生成查询结果

回复评论:

'$this->db->where('c.LANG', 'EN');'不起作用。此行始终返回 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();

推荐阅读