php - 使用 Laravel 4 将数据从旧表迁移到新表

标签 php laravel migration laravel-4 database-migration

是否可以将数据从旧表复制到新表而不是重命名?我们正在计划一次主要的数据库模式升级,并希望保留当前的数据表,因此迁移 down() 可以像删除新创建的表一样简单。

我们意识到这破坏了向后兼容性,因为 migrate:rollback 并没有真正将任何新数据回滚到以前的状态;但是由于模式更新的规模,启用这样的东西将非常昂贵,我们满足于简单的单向迁移,只要它保留旧表。

这可以单独在 Laravel 的迁移和模式中完成吗?

最佳答案

感谢@TonyArra 和@Fractaliste 的建议,我们现在做类似下面的事情,这允许我们测试运行迁移和回滚而不用担心数据丢失。

use Illuminate\Database\Migrations\Migration;

use MyNewModel;

class DataConvert extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        foreach(MyOldModel::all() as $item)
        {
            MyNewModel::create(array(...));
        }

    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        MyNewModel::truncate();
    }

}

关于php - 使用 Laravel 4 将数据从旧表迁移到新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20467910/

相关文章:

.net - VB 到 C# 或 VB.net 的转换

javascript - 客户端服务器从自己的域返回 json 时没有 'Access-Control-Allow-Origin'

javascript - PHP - 使用放大弹出窗口提交表单后显示消息

php - 选择今天、本周、本月的记录 php mysql

php - 如何更改 token guard 中的 api_token 列

ruby-on-rails - 如何在 Ruby on Rails 3 中一次恢复所有迁移?

php - 如何在列表中显示MySQL数据

php - Laravel 5.5 用户模型和好友关系(belongsToMany)由多列组成

php - 图像与 Laravel

ubuntu - 将虚拟机从 KVM 迁移到 Openstack