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が含まれている場合、それ,呼び出します。

現在、メソッドを呼び出す前に「private」プロパティ$_protect_identifiersfalseに設定すると、これを回避できます。メソッドを実行すると、これがスキップされてから元に戻ります(たとえば、問題のある列/テーブル名に役立ちます)。これはおそらくあまり良い考えではありません。将来のCIバージョンでは、このプロパティが実際になり、コードが破損する可能性があります。$this->dborder_byprivate

残念ながら、データベースライブラリを拡張することはできませんが、下のファイルを変更することを恐れない場合は、「order byrandom()」が例外を取得したのと同じようsystemに、メソッドで例外を作成できますorder_by()

于 2012-10-10T09:54:26.530 に答える