Laravel実践記

【laravel】クエリビルダでDBのレコード数を取得する方法

DBのレコード数をえる方法は?

laravelでシステムを構築している際、データのレコード数を知りたいということは多々あります。
たとえば、会員制のサイトを構築した際、登録ユーザー数が何名登録されているのか?等が考えられます。
また、条件を指定して、この条件だった場合、レコード数はいくつあるのか等考えればいろいろと出てきます。

既にデータを取得している場合のデータ数をカウントする方法

すでにクエリビルダでデータをget()している場合

//ユーザーのロールが1のレコード数を得る
$users = User::where('role',1)->get();

$count=$users->count();

上記のようにまずはget()で必要な条件でデータを取得後、count()でデータ数を取得できる。

get()せずにカウントだけしたい場合

データ数のカウントだけして、データは必要ない場合、上記の例では回りくどいですよね、上記プログラムで$userのデータを使用せず、カウントだけしたい場合は

//ユーザーのロールが1のレコード数を得る
$count = User::where('role',1)->count();

とすればデータのカウントできます。

count()以外の便利な集計メソッド

count()以外にもmax,min,avg,sum等便利な集計メソッドがありますので、それぞれの例を上げます。

max()の使用例

max()はカラム内の最大値を取得できる集計メソッドです。
例えば、Userテーブルにage(年齢)カラムが設定されていて、年齢が一番高い方の年齢を取得する場合

$agemax = User::max('age');

で取得できます。

min()の使用例

min()は上記max()と反対にカラム内の最小値を取得できる集計メソッドです。
例えば、Userテーブルにage(年齢)カラムが設定されていて、年齢が一番低い方の年齢を取得する場合

$agemin = User::min('age');

で取得できます。

avg()の使用例

avg()はカラム内の平均値を取得できる集計メソッドです。
例えば、Userテーブルにage(年齢)カラムが設定されていて、年齢の平均値を取得する場合

$ageavg = User::avg('age');

で取得できます。

sum()の使用例

sum()はカラムの合計値を取得できる集計メソッドです。
例えば、Userテーブルにage(年齢)カラムが設定されていて、年齢の合計値を取得する場合

$agesum = User::sum('age');

で取得できます。

-Laravel実践記

© 2024 Laravel World