Laravel Bladeでcount()を使用するのは非効率的ですか?

フェリックスマキシム

これは、より「ベストプラクティス」の質問です。

私のウェブサイトには記事があり、記事にはコメントを付けることができます。

public function comments() {
    return $this->hasMany('App\Comment', 'submission_id');
}   

記事が掲載されているフロントページには、コメントの量が表示されます。

@if ($article->comments->count())
    {{ $article->comments->count() }}
    {{ $article->comments->count() == 1 ? 'comment' : 'comments' }}
@endif

そして、私は自分自身に考えていました。この例では、私のデータベースはこの単純なコードスニペットに対して3回クエリされていますか?

この関係を通じてコメント数を取得するたびに、コメントの配列全体とそのすべての列が読み込まれますか?記事には1,000以上のコメントが含まれる場合があるためです。

もしそうならarticles、コメントが投稿されるたびにインクリメントする列をデータベーステーブルに配置し、関係を介してではなく直接フェッチするのはベストプラクティスではないでしょうか。

ティムルイス

あなたがそれをしている方法ではありません。を使用しているとき->count()、およびそれがCollectionバージョンであるかバージョンであるかによって異なりますBuilder次の例を参照してください。

例1-comments()メソッドを使用した新しいクエリ

$article = Article::first();
$article->comments()->count();

この例では、を使用する$article->comments()と、(Builderクラスを使用して新しいクエリが開始されますこのクエリをどのように終了するか、つまりを使用するかどうかに関係なく->first()->get()または->count()新しいクエリが実行されます。

ここで、例2-commentsプロパティ持つ新しいクエリ

$article = Article::first();
$article->comments->count();

この例で$article->commentsは、リレーションシップがロードされているかどうかに関係なく、リレーションシップアクセサーの動作が異なるため、は新しいクエリを実行します。この場合、ロードされていないため$article->comments、のBuilder代わりにインスタンスを返すCollectionため、クエリを終了すると新しいクエリが実行されます。

最後に、例3-プロパティをCollection使用したアクセスcomments

$article = Article::with(["comments"])->first();
$article->comments->count();

この最後の例で$article->comments->with(["comments"])を介してロードされるように指定されているためCollectionBuilderインスタンスではなく、です。このため、呼び出して->count()使用しているCollectionカウント方法を、および追加のクエリを実行しません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Laravel .bladeファイル内でDBを使用することは安全ですか?

分類Dev

Laravelの条件文:when()は効率的ですか?

分類Dev

LaravelのBLADEのコレクションから特定のモデルを取得する最も効率的な方法

分類Dev

Laravel-Bladeのtextareaのvalue属性で変数を使用する方法は?

分類Dev

Laravel 5 Bladeでnl2br()を使用するにはどうすればよいですか?

分類Dev

Laravel Bladeで一意のIDを確保するにはどうすればよいですか?

分類Dev

Laravel 5のblade.phpをすでに拡張しているblade.phpを拡張できますか?

分類Dev

login.blade.php(Laravel / Spark)を編集できないのはなぜですか?

分類Dev

laravel 5でファイル名を付けると、.phpとabc.blade.phpの違いは何ですか?

分類Dev

laravelで6000k +レコードDBから単一のレコードを検索する効率的な方法

分類Dev

Laravelの@lang拡張子を持つ*.blade.phpファイルでstrtolowerを使用する方法は?

分類Dev

Laravelのheader.bladeにデータを割り当てる最良の方法は何ですか?

分類Dev

Laravel5.2のblade.phpでErrorExceptionを修正する方法

分類Dev

Laravel:take(1)-> count(); これは何を意味するのでしょうか?

分類Dev

Laravel5.1で非laravelパッケージを使用する方法

分類Dev

elixir(Laravel)で.versionを使用することの重要性は何ですか?

分類Dev

Laravelの雄弁な「with」関数でgroupByを使用することは可能ですか?

分類Dev

Laravelでリクエストを使用するのはいつですか?

分類Dev

Laravel-私の二重提出ソリューションは効率的ですか

分類Dev

Laravel EloquentORMをAPIで使用することは可能ですか?

分類Dev

Sass変数をLaravel / Blade / JSに渡すことは可能ですか?

分類Dev

Laravelでドロップダウンを動的に設定する効率的な方法

分類Dev

1つのLaravel5 SQLクエリでCOUNT、GROUP BY、およびDATE_FORMATを使用するにはどうすればよいですか?

分類Dev

LaravelのBladeテンプレートを使用して変数をレイアウトに渡すにはどうすればよいですか?

分類Dev

Laravel-Guzzle 7:Laravelで効果的なURLを取得するにはどうすればよいですか?

分類Dev

Laravelのindex.phpとindex.blade.phpの違いは何ですか?

分類Dev

なぜlaravelでnpmを使用するのですか?

分類Dev

ReactJのlaravelルートを無効にするにはどうすればよいですか?

分類Dev

Laravelで2つのデータセットをチェーンする最も効率的な方法

Related 関連記事

  1. 1

    Laravel .bladeファイル内でDBを使用することは安全ですか?

  2. 2

    Laravelの条件文:when()は効率的ですか?

  3. 3

    LaravelのBLADEのコレクションから特定のモデルを取得する最も効率的な方法

  4. 4

    Laravel-Bladeのtextareaのvalue属性で変数を使用する方法は?

  5. 5

    Laravel 5 Bladeでnl2br()を使用するにはどうすればよいですか?

  6. 6

    Laravel Bladeで一意のIDを確保するにはどうすればよいですか?

  7. 7

    Laravel 5のblade.phpをすでに拡張しているblade.phpを拡張できますか?

  8. 8

    login.blade.php(Laravel / Spark)を編集できないのはなぜですか?

  9. 9

    laravel 5でファイル名を付けると、.phpとabc.blade.phpの違いは何ですか?

  10. 10

    laravelで6000k +レコードDBから単一のレコードを検索する効率的な方法

  11. 11

    Laravelの@lang拡張子を持つ*.blade.phpファイルでstrtolowerを使用する方法は?

  12. 12

    Laravelのheader.bladeにデータを割り当てる最良の方法は何ですか?

  13. 13

    Laravel5.2のblade.phpでErrorExceptionを修正する方法

  14. 14

    Laravel:take(1)-> count(); これは何を意味するのでしょうか?

  15. 15

    Laravel5.1で非laravelパッケージを使用する方法

  16. 16

    elixir(Laravel)で.versionを使用することの重要性は何ですか?

  17. 17

    Laravelの雄弁な「with」関数でgroupByを使用することは可能ですか?

  18. 18

    Laravelでリクエストを使用するのはいつですか?

  19. 19

    Laravel-私の二重提出ソリューションは効率的ですか

  20. 20

    Laravel EloquentORMをAPIで使用することは可能ですか?

  21. 21

    Sass変数をLaravel / Blade / JSに渡すことは可能ですか?

  22. 22

    Laravelでドロップダウンを動的に設定する効率的な方法

  23. 23

    1つのLaravel5 SQLクエリでCOUNT、GROUP BY、およびDATE_FORMATを使用するにはどうすればよいですか?

  24. 24

    LaravelのBladeテンプレートを使用して変数をレイアウトに渡すにはどうすればよいですか?

  25. 25

    Laravel-Guzzle 7:Laravelで効果的なURLを取得するにはどうすればよいですか?

  26. 26

    Laravelのindex.phpとindex.blade.phpの違いは何ですか?

  27. 27

    なぜlaravelでnpmを使用するのですか?

  28. 28

    ReactJのlaravelルートを無効にするにはどうすればよいですか?

  29. 29

    Laravelで2つのデータセットをチェーンする最も効率的な方法

ホットタグ

アーカイブ