web-dev-qa-db-fra.com

Laravel il y a 5,6 fois dans les vues

<?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]);
    }
}

Est-il possible de faire écho au Time Ago dans ma vue (pages.dashboard.dashboard) Quelque chose comme,

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

Attendre une sortie comme,

1 min ago
8
user10070358

Essayez d'abord un modèle éloquent.

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

en vue

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

En termes pour votre cas

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

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

Explication

L'instance le modèle éloquent récupère automatiquement les transtypages vers Carbon et vous pouvez utiliser toutes les méthodes

Dans le cas de la date de la requête DB (created_at) n'est pas une analyse, nous devons donc analyser manuellement.

12
im-sunil

peut-être que cela vous aiderait

Une belle fonctionnalité semi-cachée des horodatages dans Eloquent est qu'ils ne renvoient pas seulement des chaînes de la base de données - ils retournent en fait une instance de Carbon, une excellente extension de la bibliothèque DateTime de PHP. Cela signifie qu'un tas de fonctions (et je veux dire un tas) sont disponibles directement sur les horodatages de votre modèle. Cela vaut la peine de lire le GitHub README pour voir ce qui est disponible, mais l'une des méthodes les plus cool est diffForHumans (), une petite fonction pratique fournissant le format "il y a longtemps" recherché depuis longtemps nous avons souvent besoin.

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

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

Ou

Si created_date est une instance de Carbon\Carbon, vous pouvez faire:

$row->created_date->diffForHumans()

S'il ne s'agit pas d'une instance de Carbon, vous pouvez faire:

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

Ou vous ajoutez la propriété de modèle à la $dates liste de transtypage dans le modèle, qui convertira la propriété en une instance Carbon chaque fois que vous y accéderez (comme $user->created_date):

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

Les champs created_at et updated_at sont automatiquement ajoutés à cette liste de diffusion si $timestamps d'un modèle est défini sur true. Aussi deleted_at sera ajouté si les suppressions progressives sont activées.

1
Jagdeesh Kumar

écrivez simplement ->diffForHumans(); après votre temps. comme $record->created_date->diffForHumans();

0
Imad Ullah