Laravelでは、データベースからデータを取得する方法として大きく2つあります。
- DBファザードを使ってSQLを作成し取得する方法
- オブジェクトリレーショナルマッパー(ORM)であるEloquent(エロクエント)を使って取得する方法
今回は「①のDBファザード」の使い方について説明します。基本的な使い方は「②のEloquent」を使った方法と同じになります。
Contents
基本
基本的な流れ
tableメソッドでベースとなるテーブルを定義
whereメソッドやorderbyメソッドでクエリを作成
getメソッドで作成したクエリのデータを取得する。
table メソッド
<?php
use Illuminate\Support\Facades\DB;
$query = DB::table('users');
dump($query);
// 出力値(生成されるSQL文)
"select * from `company_users`"
データ取得
get メソッド
Illuminate\Support\Collectionクラスで結果を取得できる。
$users = DB::table('users')->get();
// SQL
"select * from `company_users`"
first メソッド
stdClass クラスで取得できます。
動的なプロパティが使える、汎用的な空のクラスです。
https://www.php.net/manual/ja/class.stdclass.php
$user = DB::table('users')->first();
検索、条件
where メソッド
完全一致
$query->where('name','Eula Cole');
$query->where('name','=','Eula Cole');
一致しない
$query->where('name','<>','Eula Cole');
$query->whereNot('name','Eula Cole');
含む
// 「E」という文字列を含む
$query->where('name','LIKE','%E%');
前方一致
// 「P〜」 Pで始まる文字列に一致するもの
$query->where('name','LIKE','P%');
後方一致
// 「〜le」 leで終わる文字列に一致するもの
$query->where('name','LIKE','%le');
orWhere メソッド
〇〇 か △△に一致するものみたいな形で検索できます。
orWhereメソッドだけでは、whereメソッドと同様になります。
orによる検索なので2つ以上の条件が必要になります。
// ageが60に一致する
$query->where('age',60);
// 上記(ageが60に一致する)条件 か leで終わる文字列に一致するもの
$query->orWhere('name','LIKE','%le');
whereIn
// ageが20か40か60に一致する
$query->whereIn('age',[20,40,60]);
notWhereIn
// ageが20か40か60に一致しないもの
$query->whereIn('age',[20,40,60]);
並び替え
orderby メソッド
// 昇順 1,2,3...
$query->orderBy('id', 'asc');
// 降順 10,9,8....
$query->orderBy('id', 'desc');
集計
count メソッド
//
$count = $query->count();
sum メソッド
// ageカラムの合計値
$sum = $query->sum('age');
avg メソッド
// ageカラムの平均値
$avg = $query->avg('age');
minメソッド
// ageカラムの最小値
$min = $query->min('age');
maxメソッド
// ageカラムの最大値
$max = $query->max('age');
取得数
limitメソッド
// 5個まで取得
$users = $query->limit(5)->get();
offsetメソッド
// 2番目(0が1番目)から5個まで取得
$users = $query->offset(1)->limit(5)->get();
スポンサーリンク
スポンサーリンク