Laravel 5.6时间前在视图中

时间:2018-07-19 10:54:54

标签: php laravel-5.6

<?php

namespace project1\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use View;

class IndexController extends Controller
{
    public function index() 
    {
          $users  = DB::table('users')->orderBy('created_at','desc')->limit(5)->get();
          return View::make('pages.dashboard.dashboard',['users' => $users]);
    }
}

是否可以在我的视图( pages.dashboard.dashboard )之类的地方回显时间

{{ $user->created_at->diffForHumans() }}

期望输出类似,

1 min ago

4 个答案:

答案 0 :(得分:6)

首先,尝试一个雄辩的模型。

$users = App\User::orderBy('created_at','desc')->limit(5)->get();

可见

@foreach($users as $user) {{$user->created_at->diffForHumans()}} @endforeach

针对您的情况而言

$users = DB::table('users')->orderBy('created_at','desc')->limit(5)->get();

@foreach($users as $user) {{ Carbon\Carbon::parse($user->created_at)->diffForHumans()}} @endforeach

说明

雄辩的模型会自动将演员强制转换为Carbon 实例,您可以使用所有方法

如果数据库查询日期(created_at)未解析,则我们必须手动解析

答案 1 :(得分:1)

也许会对您有帮助

Eloquent中时间戳的一个很好的半隐藏特征是它们不只是从数据库返回字符串,而是实际上返回Carbon的实例,这是PHP DateTime库的一个很好的扩展。这意味着在模型的时间戳上可以使用一堆函数(我是说一堆)。值得阅读GitHub README以了解可用的内容,但是最酷的方法之一是diffForHumans(),这是一个方便的小函数,提供了我们经常需要的广受欢迎的“时间前”格式。

$user = User::first();
echo $user->created_at->diffForHumans(); // 2 days ago

$user->touch();
echo $user->created_at->diffForHumans(); // a second ago

如果created_date是Carbon \ Carbon的实例,则可以执行以下操作:

$row->created_date->diffForHumans()

如果它不是Carbon的实例,则可以执行以下操作:

(new Carbon\Carbon($row->created_date))->diffForHumans()

或者您将模型属性添加到模型中的$dates投射列表中,这将在您访问属性时将其投射到Carbon实例(例如$user->created_date):

class User
{
    protected $dates = [
        'created_date',
    ];
}

如果将模型的created_at设置为updated_at,则字段$timestampstrue会自动添加到此投射列表中。如果启用了软删除,还将添加deleted_at

答案 2 :(得分:0)

时间过后,只需写->diffForHumans();即可。 像$record->created_date->diffForHumans();

答案 3 :(得分:0)

Laravel 5.5> 随便写

{{ $date->created_at->diffForHumans() }}

任何时间之前返回