Codeigniter order_by与CONVERT

时间:2012-10-10 09:22:41

标签: mysql codeigniter sql-order-by

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

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

codeigniter将SIGNED字放在` - s之间,如:

CONVERT(codExtern, `INTEGER` )

我怎样才能让它发挥作用?

1 个答案:

答案 0 :(得分:1)

很遗憾,您无法使用参数like in the select() method禁用标识符保护。 CI会在输入CI_DB_driver::_protect_identifiers上调用if it has a , in it

目前,如果你设置了所谓的"私有"你可以解决这个问题。在调用false方法之前,$this->db$_protect_identifiersorder_by的属性,所以当它运行时它将跳过此,然后将其翻转(这有助于有问题的列/表例如姓名)。这可能不是一个好主意,在将来的CI版本中,此属性可能会变为private并且您的代码将会中断。

不幸的是,数据库库无法扩展,但是如果您不想修改system下的文件,可以在order_by()方法中创建一个例外,就像"随机排序一样()" got one.