小编Zac*_*erg的帖子

使用 Laravel 5.5 如何通过迁移复制表中的列?

我想seasons使用 Laravel 5.5 中的迁移在现有表上复制一列。

我可以使用 SQL 运行这两个查询来完成此操作:

ALTER TABLE seasons ADD uploader_channel_partner_id BIGINT NULL 
Run Code Online (Sandbox Code Playgroud)

然后

UPDATE seasons set seasons.uploader_channel_partner_id = seasons.channel_partner_id
Run Code Online (Sandbox Code Playgroud)

我正在创建一个系统,您可以在其中转移视频的所有权,同时保留原始上传者的存储。

我的迁移的 up 函数目前只包含以下内容:

Schema::create('seasons', function (Blueprint $table) {
    $table->unsignedBigInteger('uploader_channel_partner_id');
    $table->foreign('uploader_channel_partner_id')->references('id')->on('channel_partners');
});
Run Code Online (Sandbox Code Playgroud)

编辑:

我已经让它工作了,但它又慢又难看,我确信有更好的方法:

public function up()
{
    Schema::table('seasons', function (Blueprint $table) {
        $table->unsignedBigInteger('uploader_channel_partner_id')->after('channel_partner_id')->nullable();
        $table->foreign('uploader_channel_partner_id')->references('id')->on('channel_partners');
    });
    $seasons = Season::withTrashed()->get();
    foreach ($seasons as $key => $season) {
        $season->uploader_channel_partner_id = $season->channel_partner_id;
        $season->save();
    }
}
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-5

3
推荐指数
1
解决办法
740
查看次数

标签 统计

laravel ×1

laravel-5 ×1

php ×1