Laravel 批量插入原始查询

Srn*_*zek 6 mysql mass-assignment laravel

我有原始查询:

INSERT INTO employee (fk_country_id, employee_id, fk_city_id, password, role, email, joined_at, resigned_at, created_at, updated_at) VALUES (?, ?, (SELECT id FROM city WHERE city.id = ?), ?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE email = VALUES(email), joined_at = VALUES(joined_at), resigned_at = VALUES(resigned_at)
Run Code Online (Sandbox Code Playgroud)

我正在执行这样的查询:

DB::insert($query, $parameters);
Run Code Online (Sandbox Code Playgroud)

其中参数的值采用数组的形式。

由于 INSERT 和 UPDATE 操作有大量行,因此我需要优化查询以在单个查询中插入多行值。

如何在 Laravel 的帮助下优化我的查询?

有一些选项允许使用嵌套数组运行查询,但我无法使用:

DB::insert();
Run Code Online (Sandbox Code Playgroud)

我想避免在 INSERT 操作期间使用“(?, ?, ?), (?, ?, ?)....”。Laravel 如何促进这种事情使代码看起来更干净和优化?

vst*_*har 3

对于原始批量插入,您可以使用:

DB::unprepared("
    insert into users (email, votes) values ('john@mail.com', 10);
    insert into users (email, votes) values ('jane@mail.com', 12);
");
Run Code Online (Sandbox Code Playgroud)

只是要小心 SQL 注入!

在测试中快速填充数据库时,这可能非常有用。