CodeIgniter ActiveRecord连接语句从ON子句中删除'['

时间:2012-07-23 16:23:51

标签: sql-server codeigniter activerecord

使用Codeigniter(v1.7.2)Active Record Class查询MSSQL数据库(外部数据库,我不控制表或字段名称)

以下代码:

$this->db->select('[Key Field], MemberInfo.OtherField');
$this->db->limit(10);
$this->db->from('primaryTable');
$this->db->join('MemberInfo', '[Member Number] = Member_Number', 'left');
$this->db->where('[Member Number]  = 573');
$this->db->where('[Incident Date] BETWEEN '. $DateStart . ' AND ' . $DateEnd);

生成以下Query(语法错误)

SELECT  TOP 10 [Key Field], MemberInfo.OtherField
FROM primaryTable
LEFT JOIN MemberInfo ON Member Number] = Member_Number
WHERE [Member Number] = '573'
AND [Incident Date] BETWEEN 2012-01-01 AND 2012-07-19

请注意JOIN子句,它缺少字段名称

上的开头'['

我尝试使用双引号,这产生了相同的结果。

任何人都有想法,这是1.7.2中的已知错误(我知道它已经过时了,正在进行更新)?

更新 问题也出现在2.1.2中

以下接受的答案也是2.1.2的修正:更改JOIN函数中的正则表达式检查以查找开头[

1 个答案:

答案 0 :(得分:2)

问题出在参数ON中。框架中没有集成的解决方案(不是版本2)。

您有两个选择:

  1. Altering the core of the library active_record

  2. 使用$this->db->query();

  3. 将查询写入包含连接的完整链中