APIResourceでリレーションの初期値の設定で割とハマったのでメモ。
やりたかったこと
リレーション先のUserモデルが存在しない時に、Userモデルの空インスタンスをデフォルト値に設定したかった。
ただ、下記のソースだとwhenLoadedの第二引数($value)で無限ループが発生してしまう。
❌ 無限ループが発生する
new UserResource($this->whenLoaded('user', $this->user, new User()))
解決
whenLoadedの第二引数($value)にも、whenLoadedを指定することで解決しました。
⭕
new UserResource($this->whenLoaded('user', $this->whenLoaded('user'), new User()))