Laravelでソフトデリートしたデータを取得する方法は公式ドキュメントに記載されていますが、リレーション先のソフトデリートされたデータを取得する方法が書かれていませんでしたので、方法をメモしておきます。

Laravelでソフトデリートしたリレーション先のデータを取得する方法

テーブル構成

CustomerテーブルとCompanyテーブルがbelongsToでつながっているとします。

問題

Customerテーブルにソフトデリートされたデータが有る場合は、公式ドキュメントにもあるようにwithTrashed()を使えばソフトデリートされたデータを取得できます。

CustomerテーブルにリレーションしているCompanyテーブルのデータを取得するには、モデルで指定したcompanyを使用します。

このときに、Company側にソフトデリートされたデータがある場合、データの取得ができません。このデータを取得する方法が公式ドキュメントには記載がされていません。
ちなみに、下のように記述しても正しく動作しません。

対処方法

こちらのサイトを参考にさせていただきました。(LALAVEL DAILY TEAM

モデルのリレーション設定にwithTrashed()を記述します。