php命令由created_at,午夜永远是第一位的

时间:2018-04-15 02:42:15

标签: php laravel sql-order-by

我在表格上排序值时遇到问题。我按created_at列对这些项目进行了排序。一切都很好但是当桌子在上午12:01到12:59收到一个项目时,它们总是首先出现在列表中。我正在使用自定义日期格式。

 $date_time = @date('F j Y g:i a', strtotime(@date('F j Y g:i a')));

并且输出为“ 2018年4月15日凌晨2:07

我的 created_at 列是varchar,原因是我正在使用date_default_timezone_set();因为Web服务器在不同时区存储项目并且在实际创建项目时会破坏日期时间,这就是我不使用时间戳的原因。

还有一件事是我希望这些时间呈现为 3小时前发布昨天无论如何。

我正在使用laravel 5.6。

1 个答案:

答案 0 :(得分:1)

对于渲染时的日期时间格式,您可以在模型中创建一个mutator:

public function getCreatedAtAttribute($value)
{
    return Carbon\Carbon::createFromFormat('F j Y g:i a', $value)->diffForHumans();
}

对于排序,你想要实现什么?如果你要对日期进行排序,那么午夜就会出现。