【Laravel7】リレーション先のソフトデリートされたデータを取得する

やりたいこと

ソフトデリートしたユーザーの

・投稿
・コメント

を表示させたい。

状況

ソフトデリートしたユーザーが

・投稿した記事
・コメントをつけた記事

を開くと、データを取ってこれずエラーになる。

原因

postsテーブルとusersテーブルをリレーションしており、postsからusersのデータを取ってこようとしている。

しかし、リレーション先であるusersのレコードをソフトデリートしているため、取得できない。

解決方法

モデルのリレーション設定に->withTrashed()をつける。

削除したユーザーが投稿したコメントを表示する場合

class Comment extends Model
{
    public function user()
   {
       // コメントは1つのユーザーに所属する
       return $this->belongsTo('App\User')->withTrashed();
   }
   public function getUserName()
   {
       return $this->user->name;
   }
}




この記事が気に入ったらサポートをしてみませんか?