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

2019/08/06

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'));

 
また、気が付いたことがあれば追記します。

以上です。

 
Laravelのデータベースの扱い方についてもっと理解を深めたい方は PHPフレームワーク Laravel入門 をお勧めします。

ポイント
データベース関連の掲載ページ

Chapter 5 データベースの利用
5.1 データベースを準備する
5.2 DBクラスの利用
5.3 クエリビルダ
5.4 マイグレーションとシーディング

本庄マサノリ

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

>> Twitter をフォローする

 

-基礎知識