【发布时间】:2020-09-24 22:16:10
【问题描述】:
我似乎无法在 Laravel 7 中按月排序。我对月、日、年和时间使用不同的列,而不是按月排序,而是按字母顺序排列月份。
预期结果:一月、二月、三月、四月
实际结果:四月、二月、一月、三月
这是我的代码:
$ledgers = Ledger::orderBy('month', 'DESC')
->orderBy('day', 'DESC')
->orderBy('year', 'DESC')
->orderBy('time', 'DESC')
->where('user_id', auth()->user()->id)
->paginate(8);
【问题讨论】:
-
好吧,如果您的
month列是包含月份文本的varchar,那么它当然会按字母顺序排列……这似乎是存储日期的一种非常糟糕的方式。您应该存储date、datetime或timestamp,并使用DATE_FORMAT之类的函数来获取月、日、年等。 -
月份是数字还是字符串?如果它是一个字符串,您将必须构建自定义排序逻辑。您是否有特定原因不使用日期时间而不是单独的列?
-
它是一个字符串。我仍在学习如何做后端以及我的老师告诉我们将它们分开的方法。通过它也更容易获得月报和日报