是否可以将数据从旧表复制到新表而不是重命名
?我们正在计划一次主要的数据库模式升级,并希望保留当前的数据表,因此迁移 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/