0
我在我的項目模型上有owns_count counter_cache。當我做當我在counter_cache上執行命令時,它首先返回nil對象?
Items.order("owns_cache DESC")
,它返回我的對象之前,其他結果零。如果我做
"owns_cache ASC"
,這是正確的。
我該怎麼做?
我在我的項目模型上有owns_count counter_cache。當我做當我在counter_cache上執行命令時,它首先返回nil對象?
Items.order("owns_cache DESC")
,它返回我的對象之前,其他結果零。如果我做
"owns_cache ASC"
,這是正確的。
我該怎麼做?
如何獲得排序的NULL取決於底層數據庫。
對於PostgreSQL,你可以這樣做:
Items.order("owns_cache DESC NULLS LAST")
對於MySQL和SQLite:
Items.order("COALESCE(owns_cache, 0) DESC")
我認爲MySQL的以降序排序,但這樣你可能不需要任何的底部排序的NULL那裏特別。這種COALESCE方法也可以在PostgreSQL中工作,所以這將是一個便攜式解決方案,應該可以爲您提供一致的結果。
如果您希望在ASC排序的底部顯示NULL,您可以用0
替換大於最大的owns_cache
數字的東西。
啊啊,謝謝。我正在使用Postgres。 – Julien