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

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

テーブル構成

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

class Customer extends Model {
    public function company() {
        return $this->belongsTo('App\Company');
    }
}

問題

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

$customer = Customer::withTrashed()->first();

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

echo $customer->company->address;

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

echo $customer->company->withTrashed()->address;

対処方法

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

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

class Customer extends Model {
    public function company() {
        return $this->belongsTo('App\Company')->withTrashed();
    }
}