Laravelについてのメモ書き、
とくにDBクラスとクエリビルダについて
DBクラスとは
Laravelに用意されている最もシンプルなデータベースアクセス機能。
SQLを直接実行するメソッドが使える。
基本的な使い方は以下(メソッドがselect文の例)
$items = DB::select(‘select * from テーブル名’);
- コントローラのアクションに記述
- 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]); といった具合。