LaravelのクエリビルダーやEloquentは便利ですが、複雑なSQLになればなるほど生SQLの方が都合がいいこともあります。
そういうときのためにDBファサードにはselect
やinsert
やdelete
メソッドも用意されていますのでこれを利用しましょう。
第二引数にバインドしたいパラメータを指定すれば、SQLインジェクション対策も問題ありません。
以下はシンプルなSQLで実行する例です。
private function insertMaster($id, $name) { $bindParam = [ 'id' => $id, 'name' => $name, ]; $sql = <<< SQL INSERT INTO master_table ( id, name ) VALUES ( :id, :name ) SQL; \Db::insert($sql, $bindParam); }
select文であればDB::select($sql,$bindParam)
で呼び出してあげれば結果が配列で返ってきます。
特にクエリビルダーに慣れていないうちは、思ったSQLにならない…ということもありますのでこういった方法も頭の片隅に入れておきましょう。
ではでは