LaravelEloquentで合計結果数を取得する方法
データベースクエリの結果を操作する場合、通常のクエリで完全なデータセットコンテンツを取得するのではなく、結果セットの行の総数のみを取得すると便利なことがよくあります。 Eloquentは、Eloquentオブジェクトの代わりにスカラー数を返すいくつかの異なる集約メソッドを提供します。 count()
, max()
、 と sum()
、とりわけ。 これらはすべて、すべてのEloquentモデルに組み込まれている固有のクエリビルダーを介して利用可能になります。
シリーズのこのパートでは、メインアプリケーションビューを更新して、各リスト内のリンクの総数を表示します。
ファイルを開く resources/views/index.php
コードエディタで:
resources/views/index.php
でスタイル設定された段落を見つけます subtitle
クラスには、 foreach
アプリケーションメニューをレンダリングするループ:
...
<p class="subtitle">
@foreach ($lists as $list)<a href="{{ route('link-list', $list->slug) }}" title="{{ $list->title }}" class="tag is-info is-light">{{ $list->title }}</a> @endforeach
</p>
...
各リスト内のリンクの総数を取得するには、内からクエリビルダーにアクセスできます。 $list->links()
で定義された関係メソッド LinkList
クラスを呼び出し、 count()
クエリビルダーから利用できるメソッド:
{{ $list->links()->count() }}
内部のコードを更新します foreach
ループして count()
メソッド呼び出し。リスト内のリンクの数を表示します。 必ず中に入れてください <a>
タグとリストタイトルの直後。 レンダリングされたHTML出力を読みやすくするために、この情報を括弧で囲むことができます。
終了すると、コードは次のようになります。
<p class="subtitle">
@foreach ($lists as $list)<a href="{{ route('link-list', $list->slug) }}" title="{{ $list->title }}" class="tag is-info is-light">{{ $list->title }} ({{ $list->links()->count() }})</a> @endforeach
</p>
終了したらファイルを保存します。 次に、ブラウザにメインアプリケーションページをリロードします。
http://localhost:8000
トップメニューに、各リストに含まれるリンクの総数を示す次のようなページが表示されます。
このシリーズの次のパートでは、クエリの結果の数を制限する方法と、LaravelEloquentで結果をページ分割する方法を学習します。