(Laravel) DB【DBクラスとクエリビルダの使い方】

laravel-dbclass-querybuilder

 

Laravelについてのメモ書き、
とくにDBクラスとクエリビルダについて

 

DBクラスとは

Laravelに用意されている最もシンプルなデータベースアクセス機能。
SQLを直接実行するメソッドが使える。

基本的な使い方は以下(メソッドがselect文の例)

$items = DB::select(‘select * from テーブル名’);

 

 

DBクラスの使い方
  • コントローラのアクションに記述
  • DBクラスの静的メソッドを呼び出して実行する
  • 引数にクエリ文を直接書く

 

SQLの結果の$itemsは、取得結果の配列をviewに渡すことができる。
上記はselect文での例だが、他にもinsertやupdateなど基本的なSQLのメソッドは揃っている。

SQLをベタがきするためPHPらしくはないが、
SQLが分かってさえいれば、一番てっとり早いDBへのアクセス方法だ。

 

プレースホルダ

プレースホルダは、SQLに引数を渡すことができる機能

public function index(Request $request) {

    $param = ['id' => $request->id];
    $items = DB::select(‘select * from テーブル名 where id = :id’, $param);

}

 

第一引数のクエリ文に、:キー という書き方をしておく(:idの部分)。
第二引数に指定したパラメータ(連想配列)の中から、該当するキー(id)の値を取得し、クエリに埋め込む。

プレースホルダは複数指定可能。
連想配列で各プレースホルダに対応した値を渡してあげる。

 

クエリビルダ

クエリビルダは、DBクラスよりもよりphpらしくデータベースを操作できるようにした機能
SQL文を書くのではなく、一連のメソッドでデータベースを操作するため、SQLを書く負担が少なくまたミスも少なくなる。

以下、使い方例

$item = DB::table(‘テーブル名’)->where(‘id’, $id)->first();

 

DB::tableメソッドで、テーブルを指定する。
これにより指定したテーブルの「ビルダ」が取得できる。

ビルダは、->where()のように、メソッドチェーンを使用して、
「データベース操作メソッド」を実行でき、これにより、データベースの操作が可能となる。

 

演算記号の使用

where句では演算記号を使用できる
書式は以下

where(フィールド名, 演算記号, 値);

 

where(‘id’, ‘>’, 5);といった具合。
あと演算記号の他に、 ‘like’ なども指定できる。

 

whereとorWhere

where()->where

whereをつなげた場合、全てのwhereに合致した条件のものだけ検索する。
つまりAND条件のようなもの。

 

where()->orWhere

最初にwhereを指定した後に、orWhereメソッドを使用した場合、指定した条件のどれかに一致した場合に検索する。
つまりOR条件のようなもの。

 

whereRaw

検索条件を文字列で指定する
書式は以下

whereRaw(条件式, パラメータ配列);

 

使い方はほぼプレースホルダと一緒。
条件式にパラメータ配列のデータを渡して、検索条件式を作成する。
ただプレースホルダでは :name のような書き方だったが、whereRawでは「?」 を使用する。
whereRaw(‘age > ? and age < ?’, [20, 50]); といった具合。

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。