2019/08/06
Laravel で DB を操作するには二つやり方があります。
・Eloquent(エロクアント)
DB の操作はこれにクエリビルダをつけます。
前回は Eloquent について記事をエントリーしました。
今回はDBファサードについてエントリーします。
DBファサードについて
Laravel では DBファサードを使って DB の操作ができます。
DBファサードを使った主な操作は以下になります。
冒頭で DBファサードを use するのを忘れずに!
INDEX
1.クエリーを実行する
$users = DB::table('users')->get();
DBファサードで取得した値の返り値は StdClass になります。
foreach ($users as $user) {
echo $user->name;
}
2.条件クエリーを実行する
クエリビルダである where() をチェーンメソッドします。
末尾は取得メソッドの get()
か first()
が必要。
DB::table('users')->where('id',1)->first();
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'));
また、気が付いたことがあれば追記します。
以上です。
Laravelのデータベースの扱い方についてもっと理解を深めたい方は PHPフレームワーク Laravel入門 をお勧めします。
データベース関連の掲載ページ
Chapter 5 データベースの利用
5.1 データベースを準備する
5.2 DBクラスの利用
5.3 クエリビルダ
5.4 マイグレーションとシーディング

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。