Laravelのアクセサは便利
アクセサてなに?
データベースから取ってきたデータが予め加工されてると表示時にごちゃごちゃせんでええので、楽やん?っていう発想
こういうのが余計なコードを増やさずに簡単にできます
夏休みの終わりは2023-08-31T23:59:59+09:00です。
こう
夏休みの終わりは2023年08月31日23時59分59秒です。
そんなのmodelでちょちょいとやれば簡単さ
modelにこう指定してあげて
protected $casts = [
'ended_at' => 'datetime:Y年m月d日H時i分s秒',
];
bladeでは
夏休みの終わりは{{ $model->ended_at }}です。
とすれば簡単にできちゃいます。
あれ?9時間違う気が・・・
夏休みの終わりは2023年08月31日14時59分59秒です。
そうです、この方式だとタイムゾーンを考慮せずになんでもかんでもUTCとして解釈されます
そこでアクセサの出番です
Laravel9からアクセサとミューテタの書き方が変わりました
use Illuminate\Database\Eloquent\Casts\Attribute;
public function endedAt(): Attribute
{
return new Attribute(
// アクセサ
get: fn($value) =>
Carbon::parse($value)->timezone('Asia/Tokyo')->format('Y年m月d日H時i分s秒')
);
}
こうするとあら不思議
夏休みの終わりは2023年08月31日23時59分59秒です。
便利ですね、アクセサ。ミューテタも便利ですのでぜひドキュメントを見ながら使って見てください。
https://readouble.com/laravel/9.x/ja/eloquent-mutators.html
ところで
夏休みの終わりは永遠に来ないでほしい