|
举个简单的例子,如果我希望有下面这种用法
this->db->from('A');
$this->db->join('B', 'B.xxx = 2 and B.id = A.id', 'left');
意看join的第二个参数,【 B.xxx = 2 】
这里是查表B的一个附加条件,但是在AR类中生成的代码会导致2不被理解为数值:
该代码将会产生
SELECT * FROM (`A`) LEFT JOIN `B` ON `B`.`xxx` = `2` and B.id = A.id
不知道大家注意到了么,这个join的第二个参数第一个 “=” 两边的信息都被理解为“表”和“列”,因而被强行加上了“``”符号,直接导致这个句子出现语法错误。这是问题之一。
然后还请注意到后面绿色标记的部分,等号前后反而没有被添加“``”符号,这是否会存在着一些错误的可能?比如列是系统的某些关键字。
觉得这个地方当属一个BUG,join方法不应该提供第二个参数,而应该像where方法一样,把ON单独列出,比如创建一个方法join_on,这样就不会出现上面所描述的问题。
|
|