LaravelのクエリビルダーやEloquentは便利ですが、複雑なSQLになればなるほど生SQLの方が都合がいいこともあります。

そういうときのためにDBファサードにはselectinsertdeleteメソッドも用意されていますのでこれを利用しましょう。

第二引数にバインドしたいパラメータを指定すれば、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にならない…ということもありますのでこういった方法も頭の片隅に入れておきましょう。

ではでは

おすすめの記事