我应该操纵Laravel数据库迁移的数据吗?或者我应该在别处做什么?

时间:2016-02-26 20:07:54

标签: php sql laravel migration laravel-migrations

我计划对我的数据库进行重大更改,这需要一组SQL指令(可能还有非SQL脚本)以将旧数据容纳到新架构中。

现在,在迁移脚本上操作数据是一个好主意吗?或者它只是用于架构(数据库结构)更改?

2 个答案:

答案 0 :(得分:0)

数据操作不适合迁移。因为自然迁移的工作原理。我将建议使用迁移来仅定义数据库模式。

Laravel按照创建的确切顺序逐个执行迁移,因此可以跟踪执行和执行顺序 ref。安东尼奥卡洛斯里贝罗。

这可以防止他/她负责他/她想要运行的课程。例如,你可以选择在department表之前为users表种子,在另一种意义上你可以选择反之亦然。移民不具备这种自由。

使用数据操作,我会建议您使用播种机来处理,因为您可以使用

选择在任何时间点运行哪个类

php artisan db:seed --class = ClassName

随着名字的到来。填充数据库的意义。

答案 1 :(得分:0)

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

  1. 速度:php通常有超时。迁移完成1/2后会发生什么?
  2. 将来运行:如果您在几个月内运行此迁移,您的应用代码可能会有所不同。
  3. 原始查询有助于解决这两个问题。

    $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 .')
        ');
    }