Laravelのクエリビルダーは、SQLを直書きせずにデータベース操作を簡潔に記述できる強力な機能です。 このチートシートでは、よく使うクエリのパターンをサンプル付きで整理します。
✅ 基本的な取得
// 全件取得
$users = DB::table('users')->get();
// 1件取得(最初のレコード)
$user = DB::table('users')->first();
// ID指定で取得
$user = DB::table('users')->find(1);
// 条件付き取得
$users = DB::table('users')->where('active', 1)->get();
🔍 条件指定
// 複数条件
DB::table('users')->where('active', 1)->where('age', '>', 18)->get();
// OR条件
DB::table('users')->where('active', 1)->orWhere('role', 'admin')->get();
// IN句
DB::table('users')->whereIn('id', [1, 2, 3])->get();
// NULLチェック
DB::table('users')->whereNull('email_verified_at')->get();
📝 データの挿入・更新・削除
// レコード挿入
DB::table('users')->insert([
'name' => 'John',
'email' => 'john@example.com'
]);
// レコード更新
DB::table('users')->where('id', 1)->update(['name' => 'Jane']);
// レコード削除
DB::table('users')->where('id', 1)->delete();
🔄 ソート・制限・ページング
// ソート
DB::table('users')->orderBy('created_at', 'desc')->get();
// 件数制限
DB::table('users')->limit(10)->get();
// ページング
DB::table('users')->paginate(15); // Bladeで {{ $users->links() }} を使用
🔁 集計関数
DB::table('orders')->count();
DB::table('orders')->max('price');
DB::table('orders')->min('price');
DB::table('orders')->avg('price');
DB::table('orders')->sum('price');
🔗 テーブル結合
DB::table('users')
->join('posts', 'users.id', '=', 'posts.user_id')
->select('users.*', 'posts.title')
->get();
// 左外部結合
DB::table('users')
->leftJoin('posts', 'users.id', '=', 'posts.user_id')
->get();
🧠 サブクエリ
$latestPosts = DB::table('posts')
->select('user_id', DB::raw('MAX(created_at) as last_post'))
->groupBy('user_id');
DB::table('users')
->joinSub($latestPosts, 'latest', function ($join) {
$join->on('users.id', '=', 'latest.user_id');
})
->get();
📦 トランザクション
DB::transaction(function () {
DB::table('users')->update(['active' => false]);
DB::table('logs')->insert(['action' => 'deactivated users']);
});
🧪 生SQLを使いたいとき
$results = DB::select('SELECT * FROM users WHERE active = ?', [1]);
🎯 よくあるTips
pluck('name')
: 特定カラムの配列を取得value('email')
: 単一値を取得exists()
/doesntExist()
: 存在確認
if (DB::table('users')->where('email', 'test@example.com')->exists()) {
// 存在する場合の処理
}
🧭 まとめ
Laravelのクエリビルダーは、読みやすく保守性の高いコードを書くための強力なツールです。 このチートシートを手元に置いておけば、日常的な開発作業がスムーズになるでしょう。
必要に応じてEloquentとの比較記事や、より高度なユースケース(例:CTE、ウィンドウ関数など)への発展も検討してください。
コメント