用于原始查询的Laravel质量插入

时间:2018-05-13 11:13:57

标签: mysql laravel mass-assignment

我有原始查询:

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)

我正在执行这样的查询:

DB::insert($query, $parameters);

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

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

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

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

DB::insert();

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

2 个答案:

答案 0 :(得分:0)

您可以使用Laravel优化代码:

class ProductView(ModelView):
    column_display_pk = True

    @expose('/new/', methods=('GET', 'POST'))
    def create_view(self):
        # render your view here
        return "Hello World"

您也可以浏览此链接。它对你有帮助。

http://fideloper.com/laravel-raw-queries

如果符合您的解决方案,请将其标记为答案。

答案 1 :(得分:0)

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

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

请小心SQL注入!

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