我在用Laravel。我将这一行添加到控制器中
$remarks = Remarks::where('document_id', $document->id)->orderBy('created_at', 'DESC)->get();或
$remarks = Remarks::where('document_id', $document->id)->latest('created_at')->get();我用foreach来获取每一个评论。
以下是$remark->$description的结果
11月10日,2019-8:29
2019年10月10日至下午2时49分
2019年10月10日至下午3:57
2020年9月13日-下午2:06
2020年9月13日-下午2:08
它应该是
9. 13,2020 -下午2:08
2020年9月13日-下午2:06
2019年11月10日至8时29分
2019年10月10日至下午3:57
2019年10月10日至下午2时49分
而且,即使我将orderBy更改为ASC或DESC,它也不会影响视图中的任何内容,它总是显示如下
11月10日,2019-8:29
2019年10月10日至下午2时49分
2019年10月10日至下午3:57
2020年9月13日-下午2:06
2020年9月13日-下午2时08分
发布于 2020-09-13 06:21:38
这里的问题是,您似乎在存储文本时间戳,而且这些时间戳并不是以允许按它们排序的格式来给出任何有意义的时间顺序。这里的一个解决办法是,不要对此进行排序:
Nov. 10, 2019 - 8:29 am使用STR_TO_DATE对此作为日期进行排序
STR_TO_DATE('Nov. 10, 2019 - 8:29 am', '%b. %d, %Y - %h:%i %p')我们可以在Laravel中使用orderByRaw来完成以下操作:
$remarks = Remarks::where('document_id', $document->id)
->orderByRaw("STR_TO_DATE(created_at, '%b. %d, %Y - %h:%i %p') DESC")
->get();作为一些一般性建议,您可能希望考虑将created_at列设置为datetime或timestamp中的MySQL。如果您这样做,那么排序降序将工作,而不必求助于使用STR_TO_DATE。
https://stackoverflow.com/questions/63867751
复制相似问题