Laravel fournit plusieurs façons de contrôler le format des dates lorsque le modèle est sérialisé en un tableau ou un JSON. De la mise en forme globale à la personnalisation de propriétés spécifiques, vous pouvez assurer la cohérence de l'affichage de la date à travers l'application.
Ce qui suit est un exemple de définition du format de date global dans la classe de base:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use DateTimeInterface; class BaseModel extends Model { protected function serializeDate(DateTimeInterface $date) { return $date->format('Y-m-d H:i:s'); } }
Examinons un exemple pratique de la gestion de différents formats de date dans le système de réservation:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Casts\Attribute; use DateTimeInterface; class Booking extends Model { protected $casts = [ 'check_in' => 'datetime:Y-m-d', 'check_out' => 'datetime:Y-m-d', 'created_at' => 'datetime:Y-m-d H:i:s', ]; protected function serializeDate(DateTimeInterface $date) { return $date->format('Y-m-d H:i:s'); } protected function checkInFormatted(): Attribute { return Attribute::make( get: fn () => $this->check_in->format('l, F j, Y') ); } protected function duration(): Attribute { return Attribute::make( get: fn () => $this->check_in->diffInDays($this->check_out) ); } public function toArray() { return array_merge(parent::toArray(), [ 'check_in_formatted' => $this->checkInFormatted, 'duration_nights' => $this->duration, 'human_readable' => sprintf( '%s for %d nights', $this->check_in->format('M j'), $this->duration ) ]); } }
Cet exemple montre comment formater une date pour une propriété spécifique à l'aide de la propriété $casts
et comment créer un accessoire personnalisé à l'aide de la classe Attribute
pour générer une date et une durée formatées. La méthode toArray()
montre comment ajouter ces propriétés personnalisées à la représentation du tableau du modèle.
La fonctionnalité de sérialisation des dattes de Laravel assure la cohérence dans les formats de date tout au long de l'application tout en offrant une flexibilité pour des cas d'utilisation spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!