2012-03-05 29 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和我貼返回結果的查詢,我想,但我不知道該怎麼做,在笨

+0

測試了一些東西后,它看起來像','逗號觸發CI包裝在反引號的錯誤部分:'STR_TO_DATE(LAST_LOGIN,\' '%H:%I')\''。在Codeigniter的Active Record中使用MySQL函數總是非常痛苦。 – 2012-03-05 08:44:50

回答

2

我不認爲你能做到這一點的笨在版本2.1.0中。正如Madmartigan所說的那樣,逗號觸發CI會在反引號中包含錯誤的部分,從而導致mysql錯誤。我認爲在order_by函數中挖掘活動記錄沒有任何意義,可以找到一種解決方法,而不是真正的解決方案來實現此功能。我檢查上游,顯然,他們有一些是interesting,你可能想要保持一個眼睛何時被釋放。

我沒有花更多的時間在活動記錄order_by中找到解決方法,但訴諸這種替代方法似乎工作正常。考慮以下?

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

這很有趣,我隨機回來檢查這個問題,你之前沒有發佈過。我同意你不要與CI的AR進行鬥爭,只是使用「普通」的SQL,儘管它可能很容易寫入這個函數。 – 2012-03-07 03:16:22

+0

的確,讓我們先讓功能部分工作,然後再進一步改進。我認爲CI的下一個版本,order_by的附加參數是OP值得關注的。 – Jasonw 2012-03-07 03:21:24

相關問題