J'utilise Laravel 4 pour créer mon projet.
Je suis en train de construire la section commentaires et je veux afficher depuis combien de temps le message a été créé, un peu comme le 'il y a 10 mn'de Facebook _ & 'il y a 2 semaines' etc.
J'ai fait un peu de recherche et trouvé qu'un paquet appelé Carbon peut le faire.
Après avoir lu le document de Laravel, il est écrit:
Par défaut, Eloquent convertira les
created_at
,updated_at
etdeleted_at
colonnes aux instances deCarbon
, qui fournit un assortiment de méthodes utiles et étend le PHPDateTime
.__ natif. classe.
Mais lorsque je renvoie une colonne de date que j'ai créée, elle ne l'affiche pas comme sur Facebook.
Le code que j'utilise est:
return array('time');
Est-ce que n'importe quel corps a utilisé ce paquet Carbon qui pourrait me donner un coup de main pour faire ce dont j'ai besoin?.
Si vous lisez les documents Carbon pour obtenir ce que vous voulez, vous appelez la méthode diffForHumans()
.
<?php echo \Carbon\Carbon::createFromTimeStamp(strtotime($comment->created_at))->diffForHumans() ?>
Par défaut, Eloquent convertira les colonnes created_at, updated_at et delete_at en instances de Carbon. Donc, votre code devrait ressembler à ceci:
$comment->created_at->diffForHumans();
C'est vraiment cool. Il va produire une chaîne comme 2 minutes ago
ou 1 day ago
. Plurar ou singulier, secondes, minutes, heures, jours, semaines ou années, il s'exécute automatiquement. Je l'ai testé sur Laravel version 4.1.24.
Pour toute version de Laravel
$message->updated_at->diffForHumans();
utilisez ce code pour time ago:
public function time_elapsed_string($datetime, $full = false) {
$now = new DateTime;
$ago = new DateTime($datetime);
$diff = $now->diff($ago);
$diff->w = floor($diff->d / 7);
$diff->d -= $diff->w * 7;
$string = array(
'y' => 'year',
'm' => 'month',
'w' => 'week',
'd' => 'day',
'h' => 'hour',
'i' => 'minute',
's' => 'second',
);
foreach ($string as $k => &$v) {
if ($diff->$k) {
$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
} else {
unset($string[$k]);
}
}
if (!$full) $string = array_slice($string, 0, 1);
return $string ? implode(', ', $string) . ' ago' : 'just now';
}
Carbon :: parse ($ p-> created_at) -> diffForHumans ();