laravelでloadした時に、取得する側の論理削除を無効にしてデータを取得する方法をまとめています。
laravelのバージョンは5.1です。
usersとpostsが1対Nであるとします。
usersテーブルで論理削除されていてもユーザーの情報を取得したい場合には以下のように記述します。
$posts = App\Post::all();
$posts->load(['user' => function($query) {
$query->withTrashed();
});
論理削除したデータも取得する場合はwithTrashed()
を使います。
loadで検索条件を追加する場合は、キーにモデル名、値はクエリインスタンスを受け取る「クロージャ」となる配列を記述し、クロージャ内に検索条件を記述します。
以下を参考にさせていただきました。
https://stackoverflow.com/questions/21995670/how-to-use-withtrashed-when-im-querying-using-eager-loading