JavaScriptを有効にしてください

【Laravel】複数のSQLを一括実行する DB::unprepared

 ·  ☕ 1 分で読めます

【Laravel】複数のSQLを一括実行する DB::unprepared

Laravel で複数のSQLを一括実行する DB::unprepared を使用する

DB::unprepared を使用する

DB::Insert などを使用する場合、1つのSQL文ずつしか流せません。
複数のSQL文を実行するとエラーになります。
そこで DB::unprepared を使用します。

1
2
$sql = file_get_contents(database_path('dump.sql'));
DB::unprepared($sql);

これによりDBのdumpファイルから一括でDBの生成などが可能です。

注意点

エラーを発するのは1つ目のSQLだけのようです。
以下のような2つ目以降のSQLがエラーになってもエラーが出ないので注意してください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
$sql = <<<SQL
-- 1つ目のSQL
SELECT
    * 
FROM
    information_schema.COLUMNS;
-- 2つ目のSQL(存在しないテーブル
SELECT
    * 
FROM
    temp;
SQL;

DB::unprepared($sql);

2つ目のSQLは存在しないテーブルを指定していますがこれではエラーが出ません。

共有

こぴぺたん
著者
こぴぺたん
Copy & Paste Engineer