在迁移中批量插入而不插入数据

时间:2019-05-24 09:47:38

标签: laravel postgresql

在更新postgres数据库方案后,我想使用迁移将所有现有数据迁移到迁移中的新表中,因此当我将其部署到主机时它将自动运行。

不幸的是,这不起作用。您将在下面找到我的代码。当我将完全相同的代码复制到工匠命令时,它可以工作。当我将其复制到手工艺匠之后,它就可以工作了。当我通过迁移运行它时,它不是。当DB#insert返回true时,没有任何内容插入数据库。 我还尝试从迁移中调用先前创建的有效artisan命令,但此后它不会插入任何数据。

我已在测试之间将表删减了。连接也正确,因为DB#getDefaultConnection返回正确的连接名,并且所有其他迁移均按预期进行。也是其中包含DB#insert的另一个迁移。

奇怪的事情:它在几周前就起作用了。在撰写本文时,我仅在VueJS前端中进行了更改,而在后端中没有进行更改。我也没有更新任何软件包或postgres数据库。我绝对不确定那里发生了什么。

也:没有违反约束。

public function up()
{
    $platform_id = DB::table('platforms')->where('slug', '[...]')->first()->id;

    DB::table('apps')->chunkById(20, function ($apps) use ($platform_id) {
        $transformed = [];

        foreach ($apps as $app) {
            echo "{$app->app_id} - {$app->name}\n";
            $transformed[] = [
                'uuid'        => (string)Uuid::generate(4),
                'platform_id' => $platform_id,
                'remote_id'   => $app→app_id,
                // [...]
            ];
        }

        echo "Inserting...\n\n";
        DB::table('products')->insert($transformed);
    });

    // [...]
    // The same thing again with another table.

0 个答案:

没有答案