我正在使用 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->$description2019年11月10日 - 上午8:292019年10月10日 - 下午2:49 2019年10月10日 - 下午3:572020年9月13日 - 下午2:06 2020年9月13日 - 下午2:08它应该是2020年9月13日 - 下午2:082020年9月13日 - 下午2:062019年11月10日 - 上午8:29 2019年10月10日 - 下午3:572019年10月10日 - 下午2:49另外,即使当我将 ASC 或 DESC 更改orderBy为 ASC 或 DESC 时,它也不会影响视图中的任何内容,它总是显示此2019年11月10日 - 上午8:292019年10月10日 - 下午2:49 2019年10月10日 - 下午3:572020年9月13日 - 下午2:06 2020年9月13日 - 下午2:08
1 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
这里的问题是,您似乎正在存储文本时间戳,而且这些时间戳的格式不允许按它们排序以给出任何有意义的时间顺序。这里的一种解决方法是不对此进行排序:
Nov. 10, 2019 - 8:29 am
将此作为日期排序,使用STR_TO_DATE
:
STR_TO_DATE('Nov. 10, 2019 - 8:29 am', '%b. %d, %Y - %h:%i %p')
我们可以orderByRaw
在 Laravel 中使用:
$remarks = Remarks::where('document_id', $document->id) ->orderByRaw("STR_TO_DATE(created_at, '%b. %d, %Y - %h:%i %p') DESC") ->get();
作为一些一般建议,您可能需要考虑在 MySQL 中将created_at
列设置为datetime
或 a timestamp
。如果您这样做,那么降序排序将起作用,而不必求助于使用STR_TO_DATE
.
- 1 回答
- 0 关注
- 88 浏览
添加回答
举报
0/150
提交
取消