1

最近,我再次注意到 CodeIgniter 的 ActiveRecord 库中有一个令人难以置信的逻辑错误。

当我尝试在连接中使用“AND”时,就会出现问题。

示例查询:

$this -> db -> join(
    'predict',
    "predict.id_predict = portion.id_predict AND event.id_event = 5",
    'left'
);

结果:

LEFT JOIN `predict` ON
    `predict`.`id_predict` = `portion`.`id_predict`
    AND event.id_event = 5

但应该更有可能:

LEFT JOIN `predict` ON (
     `predict`.`id_predict` = `portion`.`id_predict`
     AND `event`.`id_event` = 5
)

有什么办法可以防止这个错误吗?

4

2 回答 2

1
$this->db->join(
    'predict',
    "(predict.id_predict = portion.id_predict AND `event`.`id_event` = 5)",
    'left'
);

你在找这个吗?

编辑

$this->db->join('predict', "predict.id_predict = portion.id_predict", 'left');
$this->db->where('event.id_event = 5');
于 2013-02-05T05:22:16.943 回答
0

也可以使用两次

$this->db->join(……);
$this->db->join(……);

通过活动记录进行多个联接。

于 2013-02-11T05:53:53.633 回答