ホームページ > バックエンド開発 > PHPチュートリアル > Laravelでモデルの日付形式をカスタマイズします

Laravelでモデルの日付形式をカスタマイズします

Karen Carpenter
リリース: 2025-03-07 01:13:09
オリジナル
669 人が閲覧しました

Customizing Model Date Formats in Laravel

Laravelは、モデルがアレイまたはJSONにシリアル化されている場合の日付形式を制御する複数の方法を提供します。グローバルフォーマットから特定のプロパティのカスタマイズまで、アプリケーション全体で日付表示の一貫性を確保できます。

以下は、基本クラスにグローバルな日付形式を設定する例です。

<?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');
    }
}
ログイン後にコピー
予約システムで異なる日付形式を管理する実用的な例を見てみましょう。

この例は、
<?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
            )
        ]);
    }
}
ログイン後にコピー
プロパティを使用して特定のプロパティの日付をフォーマットする方法と、

クラスを使用してフォーマットされた日付と期間を生成するカスタムアクセサを作成する方法を示しています。 $castsメソッドは、これらのカスタムプロパティをモデルの配列表現に追加する方法を示しています。 Attribute toArray()Laravelの日付シリアル化機能により、アプリケーション全体の日付形式の一貫性が保証され、特定のユースケースに柔軟性が提供されます。

以上がLaravelでモデルの日付形式をカスタマイズしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート