web-dev-qa-db-ja.com

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
10
user10070358

まず、雄弁なモデルを試してください。

$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にキャストされますインスタンスであり、すべてのメソッドを使用できます

DBクエリの日付(created_at)の場合は解析されないため、手動で解析する必要があります

16
im-sunil

多分それはあなたを助けるでしょう

Eloquentのタイムスタンプの優れた半隠し機能は、データベースから文字列を返すだけではなく、PHPのDateTimeライブラリの優れた拡張機能であるCarbonのインスタンスを実際に返すことです。これが意味することは、関数のヒープ(つまり、ヒープ)がモデルのタイムスタンプで直接利用できるということです。 GitHub READMEで何が利用できるかを確認するのも一読の価値がありますが、最もクールなメソッドの1つは、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_attrueに設定されている場合、フィールドupdated_atおよび$timestampsがこのキャストリストに自動的に追加されます。また、一時的な削除が有効になっている場合は、deleted_atが追加されます。

2
Jagdeesh Kumar

時間の後に->diffForHumans();と書いてください。 $record->created_date->diffForHumans();のように

0
Imad Ullah