0

我必须CONVERT(`codExtern`, SIGNED)使用 codeIgniter 订购选择。如果我这样使用它:

$this->db->order_by(" CONVERT(`codExtern`, SIGNED) ");

codeigniter 将SIGNED单词放在`-s 之间,例如:

CONVERT(codExtern, `INTEGER` )

我怎样才能让它工作?

4

1 回答 1

1

不幸的是,您不能使用方法中的select()参数禁用标识符保护。CI 将在输入中调用CI_DB_driver::_protect_identifiers如果它有一个,in

目前,如果您在调用该方法之前将所谓的“私有”属性设置$_protect_identifiers为您可以解决此问题,因此当它运行时它将跳过此操作,然后将其翻转回来(例如,它有助于解决有问题的列/表名称)。这可能不是一个真正的好主意,在未来的 CI 版本中,这个属性可能会变成真的,你的代码会中断。false$this->dborder_byprivate

不幸的是,无法扩展数据库库,但是如果您不怕修改下的文件,system则可以在方法中创建异常,order_by()就像“order by random()”一样

于 2012-10-10T09:54:26.530 回答