記事リストをクエリし、記事の著者情報をクエリする方法は、モデルに1対1の関係を記述してビューで呼び出すことは可能ですが、クエリステートメントには多くのクエリが含まれています。著者をクエリするためのステートメントを一度にクエリします
長い答え:
article
データが返された場合、合計 11 個の SQL
1 つ目は、10 個の article
データをすべて一度にクエリし、各トラバーサルで SQL
クエリを実行して、対応する を取得します。 >author
データ (その理由は、 Eloquent
がデフォルトで Lazy Loading
に設定されており、クエリ操作はリレーショナル データにアクセスする場合にのみ実行されるためです)。 $articles = App\Article::all(); foreach ($articles as $article) { echo $article->author->name; }
Eager Loading
を使用すると、SQL
クエリが 1 回実行されます。 $articles = App\Article::with('author')->get(); foreach ($articles as $article) { echo $article->author->name; }
Laravelの複数条件の関連クエリ問題について?
article
数据,则一共会执行11次SQL
语句,第一条是一次性查询所有10条article
数据,另外每次遍历都会执行一次获取相应author
数据的SQL
查询(原因是Eloquent
默认为Lazy Loading
,访问关系数据的时候才进行查询操作)。
如果使用 Eager Loading
,像下边这样,则一次性执行一次SQL
Laravel関連クエリが管理対象オブジェクトのデータの一部しか取得できない