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');
で取得できます。