2012-03-05 8 views
1

codeigniterでorder_by部分をどうやって行うのですか?codeigniterでorder_by(time)を正しく使う方法

SELECT <field> FROM <table> ORDER BY STR_TO_DATE(<field>, '%H:%i') DESC LIMIT 0 , 30 

はこれをしようとしたが、それはフィールド名として「'%H:%i')」をとります。

$this->db->order_by("STR_TO_DATE(".$field.", '%H:%i')", $order); 

フィールドがvarchar型であると私は戻って私が欲しいの結果を掲示したが、私はCodeIgniterの

+0

は、いくつかのことをテストした後、それが見えます。 MySQLの機能は、CodeigniterのActive Recordで使用するのに苦労します。 –

答えて

2

でどのように行うのか分からないのクエリは、私はあなたがCodeIgniterの中でそれを行うことができるとは思いませんバージョン2.1.0では。 Madmartiganが書いたように、コンマはバックグラウンドで間違った部分を折り返してmysqlエラーを出すようにCIをトリガーします。私は、これが機能するための実際の修正よりも回避策を見つけるために、order_by関数の積極的な記録を掘り下げていないと思います。私は上流にチェックし、明らかに、彼らはinterestingである何かを持っている、あなたはそれがリリースされたときに目を維持したいかもしれません。

アクティブレコードorder_byで回避策を見つけるのにもっと時間を費やすことはありませんでしたが、うまくいくと思われるこの代替手段に頼っています。次のことを考えますか? `STR_TO_DATE(last_login、\` '%のH:%i' は)\ `` `、`コンマはバッククォートで間違った部分をラップするCIをトリガーするよう

$sql = "SELECT <field> FROM <table> ORDER BY STR_TO_DATE(?, '%H:%i') desc LIMIT 0, 30"; 
$this->db->query($sql, array('19:20')); 
+1

これは面白いです、私はランダムにこの質問を確認するために戻って来て、あなたは1分前に​​投稿しました。私は、あなたがCIのARと戦わずに、単に「通常の」SQLを使用することに同意しますが、この関数を書くのは簡単かもしれません。 –

+0

確かに、それをさらに改善する前に、まず機能している部分を作業してみましょう。私はCIの次のリリースで、order_byの追加パラメータはOPによってそれを調べる価値があると思います。 – Jasonw

関連する問題