【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;
}
}
この記事が気に入ったらサポートをしてみませんか?