EloquentでのNULLABLEな日付の扱いでoptional()ヘルパ関数が便利
アクセサの値を普通に表示するだけなら、?:
演算子だけでいい。PHPはnull
をecho
しても特に問題ないので。
<?php echo $obj->created_at ?: 'default';
ただ、フォーマットしたい場合はちょっとやっかい。以下はcreated_at
がNULL
の場合、null
のメソッドを呼び出してエラーになる。
<?php echo $obj->created_at->format('Y/m/d') ?: 'default';
そこでoptional()
を使うと便利。
<?php echo optional($obj->created_at)->format('Y/m/d') ?: 'default';
optional()
はnull
をIlluminate\Support\Optional
クラスのオブジェクトでラップして返してくれる。このオブジェクトは、値がオブジェクトでない場合はメソッドを呼び出さないようになっている。
(なお、ドキュメントでは実装と違って、null
の場合のみエラーを防げるように書いてある)