Вы можете использовать DB::unprepared()
вместо DB::statement()
.
Разница в том, что statement()
выполняет подготовленный оператор, а unprepared()
использует PDO::exec()
.
Каждый подготовленный оператор начинает новый сеанс (внутри того же соединения с базой данных), и поскольку запрос SET IDENTITY_INSERT
является специфичным для сеанса, он не влияет на другие подготовленные операторы, такие как запрос INSERT.
PDO::exec()
влияет на все соединение с базой данных.
Как:
DB::unprepared('SET IDENTITY_INSERT test_table ON');
DB::table('articles')->insert(['id' => $request->input('article_id'), 'title' => $request->input('title'), 'body'=> $request->input('body')]);
DB::unprepared('SET IDENTITY_INSERT test_table OFF');