2022/06/14
Laravel で DB を操作するには二つやり方があります。
・Eloquent(エロクアント)
DB の操作はこれにクエリビルダをつけます。
前回は Eloquent について記事をエントリーしました。
今回はDBファサードについてエントリーします。
DBファサードについて
Laravel では DBファサードを使って DB の操作ができます。
DBファサードを使った主な操作は以下になります。
冒頭で DBファサードを use するのを忘れずに!
INDEX
1.データの取得
select() を使う
$reports = DB::select('select * from reports where status >= ?',[1]);
table() を使う
$reports = DB::table('reports')->where('status', '>=', 1)->get();
DB::select の戻り値は配列になります。
get() で取得した戻り値はCollectionクラスです。
2.条件指定のサンプル
where() や orWhere() を使用した条件指定のサンプルです。
// 条件A かつ 条件B
DB::table('reports')
->where('status', '>=', 1) // 条件A
->where('status', '<', 10) // 条件B
->get();
// 条件A または 条件B
DB::table('reports')
->where('id', '=', $id) // 条件A
->orWhere('name', '<>', '') // 条件B
->get();
// 条件 A かつ(条件B または条件C)
DB::table('reports')
->where('id', '=', $id) // 条件A
->Where(function ($query){
$query->orWhere('name', '<>', '') // 条件B
->orWhere('detail', '<>' ''); // 条件C
})
->get();
3.INSERT文を実行する
DB::insert('insert into users (email, name) values (?, ?)', ['yamada@example.com', 'yamada']);
DB::table('users')->insert(['email' => 'yamada@example.com','name' => 'yamada']);
DBファサードでの insert もしくは update では created_at
や updated_at
は更新されません。
Eloquent を利用したときのみです。
4.UPDATE文を実行する
DB::update('update users set email = 'tarou@example.com' where id = ?', ['1']);
DB::table('users')->where('id',1)->update(['email' => 'tarou@example.com']);
5.DELETE文を実行する
DB::table('users')->where('id',1)->delete();
6.外部結合を実行する
DB::table('users')
->leftJoin('posts', 'users.id', '=', 'posts.user_id')
->get();
7.SQL文を直接実行する
SQL文を直接使う場合は DB::raw
を使うことでSQL文を生成できます。
ちなみに「raw」とは「生(なま)の」という意味です。つまり、SQLの「生の文章」。
# 書式
$users = DB::select(DB::raw('select文'));
# 例
$users = DB::select(DB::raw('select * from users'));
また、気が付いたことがあれば追記します。
以上です。
PHPフレームワーク Laravel入門 第2版
僕がはじめてLaravelを学習するために参考にしたサイトは、掌田津耶乃(しょうだつやの)さんの libro というサイトです。当時(2016年)、Laravel学習サイトの中でもこのサイトは群を抜いてわかりやすく説明されていたので、とても勉強になったのを覚えています。この本は掌田津耶乃さんが書いた本なので、わかりやすく解説されているだろうと kindle で購入しました。2020年8月の時点でいうと日本国内にて唯一の Laravel の良書と言っても良いかと思います。口コミでもLaravel本のロングセラー定番解説書として認知されています。当サイトではチュートリアル形式でLaravelを解説しているので、初心者の方はこの本とセットで学習されるといいと思います。しかし、かなりわかりやすく解説されているとはいえ、PHP中級者以上のスキルは必要です。PHP自体の知識が乏しい方は 独習PHP 第3版 をあわせて購入することをお勧めします。
仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。