ホームページ  >  記事  >  バックエンド開発  >  Laravelはクエリ記事と記事著者を関連付けます

Laravelはクエリ記事と記事著者を関連付けます

PHP中文网
PHP中文网オリジナル
2017-03-21 16:18:231542ブラウズ

記事リストをクエリし、記事の著者情報をクエリする方法は、モデルに1対1の関係を記述してビューで呼び出すことは可能ですが、クエリステートメントには多くのクエリが含まれています。著者をクエリするためのステートメントを一度にクエリします

記事リストをクエリし、記事の著者情報をクエリします 1-to を作成します。モデル内で -1 の関係を作成し、それをビュー内で呼び出すことは可能ですが、作成者にクエリを実行するためのクエリ ステートメントが多数あるのですが、どうすればそれらすべてを一度にクエリできますか? 短い答え: を使用する必要があります。 Eager Loading

長い答え:


次のようにクエリとトラバースを行います。10 個の 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,访问关系数据的时候才进行查询操作)。

rrreee

如果使用 Eager Loading,像下边这样,则一次性执行一次SQLLaravel関連クエリが管理対象オブジェクトのデータの一部しか取得できない

laravel関連クエリの問題

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。