LaravelのQuery Builderとは
普段何気なく使用しているlaravelのクエリビルダ。
よくlaravelで使用するクエリビルダを簡単にまとめてみた。
※正確ではないかもしれないが、ご理解を。
※簡単に今回はcontollerを作成せずにroutes/web.phpで行う。
Query Builder(クエリビルダ)とは
DB操作をしやすくしたlaravelの機能。
通常、素のPHPではSQL文を書いてDB操作を行うが
laravelではクエリビルダを使用すればSQL文をベタで書く必要がなくなる。
※といってもSQLがわからないとなると理解度は落ちるかもしれない。
SQL文がある程度かける人がクエリビルダを使用したときに
より便利と感じるイメージにある。
クエリビルダを使用するメリット
上記の通り、DB操作が楽になった。
SQL文が最悪わからなくてもLaravelだけで生きていくのであれば
laravelのお作法を覚えておけば
最悪大丈夫かもしれない。
またサーバー攻撃からの安全性もある程度カバーされているらしく
自分でセキュリティの部分をそこまで気にしなくて使えるのもメリット。
もちろんフレームワークに依存して頼りすぎるのも良くないため
セキュリティのことは意識しなければならないが。。。
クエリビルダの使用方法
クエリビルダを使用するファイル(ControllerまたはModel等)で
以下のuse文を記載する。
以下は例)
use Illuminate\Support\Facades\DB;
これで準備はOK。
いざ使用することになる。
該当テーブルの全てを取得する方法。
今回は例として
「sample」テーブルを用意して実践。
use Illuminate\Support\Facades\DB;
--省略--
DB::table('sample')
->get();
これを変数に入れてdd()関数を使用して画面上で確認してみる。
データベースも確認してみると取得した情報と差異はなさそうだ。
これで取れそうなことがわかる。
条件を指定する where()
テーブルはそのまま「sample」テーブル。
データベースのテーブルレコードは以下のものと仮定する。
このレコードの「idが2」のレコードを取ってきたいとする。
※morimoriさん
use Illuminate\Support\Facades\DB;
--省略--
DB::table('sample')
->where('id','=','2')
->get();
またdd()関数を使用して画面上で確認する。
idが2の該当するレコードだけを引っ張ってこれた。
特定のカラムを取得する select()
テーブルはそのまま「sample」テーブル。
データベースのテーブルレコードは以下のものと仮定する。
上記の続きで今度はidが2の名前だけを取得したいとする。
新たに使用するメソッドはselect()。
その場合は下記の通りになる。
use Illuminate\Support\Facades\DB;
--省略--
DB::table('sample')
->where('id','=','2')
->select('name')
->get();
またdd()関数を使用して画面上で確認。
名前だけを取れた。
まとめ
今回は初歩中の初歩をまとめたが
クエリビルダはもっと便利なものがたくさん存在する。
徐々に使用できる幅を増やしていくための第一歩として他の人にも参考になればと思う。