Heim > Backend-Entwicklung > PHP-Tutorial > Anpassung von Modelldatumformaten in Laravel

Anpassung von Modelldatumformaten in Laravel

Karen Carpenter
Freigeben: 2025-03-07 01:13:09
Original
668 Leute haben es durchsucht

Customizing Model Date Formats in Laravel

laravel bietet mehrere Möglichkeiten, das Format von Daten zu steuern, wenn das Modell in ein Array oder JSON serialisiert wird. Von der globalen Formatierung bis zur Anpassung bestimmter Eigenschaften können Sie die Konsistenz der Datumsanzeige während der gesamten Anwendung sicherstellen.

Folgendes ist ein Beispiel für die Festlegung des globalen Datumsformats in der Basisklasse:

<?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');
    }
}
Nach dem Login kopieren

Schauen wir uns ein praktisches Beispiel für die Verwaltung verschiedener Datumsformate im Buchungssystem an:

<?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
            )
        ]);
    }
}
Nach dem Login kopieren

Dieses Beispiel zeigt, wie ein Datum für eine bestimmte Eigenschaft mithilfe der Eigenschaft $casts und wie ein benutzerdefiniertes Zubehör mithilfe der Attribute -Klasses erstellt wird, um ein formatiertes Datum und eine formatierte Dauer zu generieren. Die toArray() -Methode zeigt, wie diese benutzerdefinierten Eigenschaften zur Array -Darstellung des Modells hinzugefügt werden.

Die Serialisierungsfunktion von

Laravel sorgt für die Konsistenz der Datumsformate in der gesamten Anwendung und bietet gleichzeitig Flexibilität für bestimmte Anwendungsfälle.

Das obige ist der detaillierte Inhalt vonAnpassung von Modelldatumformaten in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage