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 サイトの他の関連記事を参照してください。