EloquentでのNULLABLEな日付の扱いでoptional()ヘルパ関数が便利

アクセサの値を普通に表示するだけなら、?:演算子だけでいい。PHPnullechoしても特に問題ないので。

<?php
echo $obj->created_at ?: 'default';

ただ、フォーマットしたい場合はちょっとやっかい。以下はcreated_atNULLの場合、nullのメソッドを呼び出してエラーになる。

<?php
echo $obj->created_at->format('Y/m/d') ?: 'default';

そこでoptional()を使うと便利。

<?php
echo optional($obj->created_at)->format('Y/m/d') ?: 'default';

optional()nullIlluminate\Support\Optionalクラスのオブジェクトでラップして返してくれる。このオブジェクトは、値がオブジェクトでない場合はメソッドを呼び出さないようになっている。

(なお、ドキュメントでは実装と違って、nullの場合のみエラーを防げるように書いてある)