我必须通过 codeIgniter CONVERT(`codExtern`, SIGNED)
来订购选择。如果我这样使用它:
$this->db->order_by(" CONVERT(`codExtern`, SIGNED) ");
代码点火器将SIGNED
单词放在`
-s 之间,如下所示:
CONVERT(codExtern, `INTEGER` )
我怎样才能让它工作?
您无法像在 select()
方法中那样使用参数禁用标识符保护。如果输入中有,
,CI 将对输入调用 CI_DB_driver::_protect_identifiers。
目前,如果您在调用 order_by
方法之前将所谓的"私有"属性$_protect_identifiers
设置为$this->db
false
,则可以解决此问题,以便在运行时跳过此操作,然后将其翻转回来(例如,它有助于处理有问题的列/表名称)。这可能不是一个好主意,在将来的 CI 版本中,此属性可能会变得非常private
并且您的代码将中断。
不幸的是,数据库库无法扩展,但是如果您不怕修改system
下的文件,则可以在order_by()
方法中创建异常,就像"按随机()排序"一样。