我必须使用 codeIgniter 通过 CONVERT(`codExtern`, SIGNED)
来订购选择。
如果我像这样使用它:
$this->db->order_by(" CONVERT(`codExtern`, SIGNED) ");
codeigniter 将 SIGNED
单词放在 `
-s 之间,例如:
CONVERT(codExtern, `INTEGER` )
我怎样才能让它发挥作用?
最佳答案
不幸的是,您无法使用参数 like in the select()
method 禁用标识符保护。 CI 将调用 CI_DB_driver::_protect_identifiers输入 if it has a ,
in it .
目前,如果您设置所谓的“私有(private)”属性$_protect_identifiers
,则可以解决此问题。在调用 order_by
方法之前在您的 $this->db
上设置 false
,这样当它运行时它会跳过这个,然后将其翻转回来(例如,它有助于解决有问题的列/表名称)。这可能不是一个真正的好主意,在未来的 CI 版本中,此属性可能会变得真正私有(private)
,并且您的代码将会损坏。
不幸的是,数据库库无法扩展,但是如果您不怕修改system
下的文件,您可以在order_by()
方法中创建一个异常,就像“随机排序()”got one.
关于mysql - Codeigniter order_by 与 CONVERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12816020/