質問: User::whereHas('posts', function($query){ $query->where('created_at', '>', '2018-09-03'); }); ``` を利用することによって、解決しましたが、whereHasでできて、eager loadでできないのは何故 なのでしょうか? よろしくお願いいたします。
回答: `whereHas` はサブクエリを用いてリレーションを用いたSQLを発行します。追記にある通り、今回の目的ではこれを用いるが正解です。 一方、eager loadというのは先に取得したModelのコレクションに対して **あとからリレーションの取得** を行います。ここで指定できるクエリはメインのクエリ(ここではユーザー)に影響を与えることはなく、その**リレーション(post)を絞り込む**だけです。 (日本語訳ドキュメントをもう一度読んでみてください Eloquent:リレーション#Eagerロード)