3

我正在计划对我的数据库进行重大更改,这将需要一组 SQL 指令(可能还包括一个非 SQL 脚本)来将旧数据适应新模式。

现在,在迁移脚本上操作数据是个好主意吗?还是仅用于模式(数据库结构)更改?

4

2 回答 2

0

在考虑迁移时,有两个问题很重要。

  1. 速度:php 通常有一个超时。当您的迁移完成 1/2 时会发生什么?
  2. 将来运行:如果您在几个月内运行此迁移,您的应用程序代码可能会有所不同。

原始查询有助于解决这两个问题。

$elements = DB::Select(DB::Raw('SELECT element_id FROM record GROUP BY element_id'));

foreach ($elements as $element)
{
    DB::Statement('
        INSERT INTO account (created_at, updated_at, name, element_id)
        VALUES (NOW(), NOW(), "Migrated account", '. $element->element_id .')
    ');
}
于 2017-11-17T00:38:50.450 回答
0

数据操作不是迁移的事情。由于自然迁移工程。我会建议使用迁移来仅定义数据库模式。

迁移是由 Laravel 以它们创建的确切顺序一一执行的,因此它可以跟踪执行和执行顺序参考。安东尼奥·卡洛斯·里贝罗。

这可以防止一个人负责他/她想要运行的课程或文件。例如,您可以选择在部门表之前播种用户表,在另一种意义上,您可以选择反之亦然。移民并非伴随着这种自由而来。

使用数据操作,我建议您使用播种机来处理它,因为您可以通过使用选择在任何时间点运行哪个类

php artisan db:seed --class=ClassName

顾名思义,种子。意思是填充数据库。

于 2016-02-26T20:43:44.860 回答