php - 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";
解决方案
要使用 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();
推荐阅读
- android - 如何直接打开媒体浏览器到照片库?
- node.js - node.js 中的 promise 发生错误,希望将其作为承诺的连接并修复
- yeoman - 无法构建我的第一个 Hello Word SPFX。“yo @microsoft/sharepoint”正在返回“TypeError:lookups.flatMap 不是函数”
- scheme - 在 Scheme 中返回有状态函数的修改版本
- api - Twitter API get webhooks for my account [PHP]
- jquery - 如何在跨度中包装按钮的文本/值?
- r - 在 R 的 vrtest 包中使用 Lo.Mac 函数时出现 UseMethod("filter") 错误
- typescript - 在 vue 中访问从 axios 获取请求中创建的计算值
- mongodb - 在 k8s 中连接 mongo-express 到 mongoDb 失败
- flutter - 如果 firebase 没有要显示的数据,则不会在 firebase 动画列表小部件中执行构建方法