DBの操作について(DBファサード)

2020/08/12

Laravel で DB を操作するには二つやり方があります。

・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_atupdated_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版 をあわせて購入することをお勧めします。

Amazonで詳細を見る

オススメ

 

本庄マサノリ

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

>> Twitter をフォローする

 

-基礎知識