[英]Rails Active Record Order Issue
我有一個名為Event的模型類,以及一個字段'when'。 我正在嘗試在desc時返回事件順序,所以這是代碼。
@events = Event.order("'when' DESC")
我正在使用MySQL作為數據庫。 但返回的結果未排序 。
我查看了控制台,並將生成的sql文件歸檔,這似乎沒問題
SELECT `events`.* FROM `events` ORDER BY 'when' DESC
我也在控制台中運行這個sql,它返回了排序結果。 “什么時候”有什么特別之處嗎?
如果我將查詢更改為Event.order("events.when DESC")
,則返回排序結果
它應該是反引號,而不是單引號。
@events = Event.order("`when` DESC")
當你使用single quote
when
它不再是一個列而只是一個字符串值。 在轉義 tableName和columnName時,你應該使用反引號而不是單行符。
您可以刪除要添加到字段中的單引號。 它應該適用於整個事物的引用,例如:
@events = Event.order("column_name DESC")
對於column_names,這通常是正確的,除非在when
是保留字的情況下。 所以你需要反擊它:
@events = Event.order("`when` DESC")
但是,我仍然建議您更改列名,最后使用保留字會遇到並發症。 在我看來,什么when
也不是很具描述性,是:當事件被創建/訂購時? 活動何時開始? 什么時候會結束? 也許occurring_at
或date_occurring
列名會更細致。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.