是否应使用Laravel迁移来更改实时列值?

时间:2016-09-06 17:29:46

标签: database laravel database-migration

我一直认为迁移是创建/改变表的结构。但是,我需要更新我们的实时数据库中的值。迁移是否是正确的方法 - 或者我应该运行自己的SQL吗?

3 个答案:

答案 0 :(得分:1)

迁移只应用于数据库架构。播种机应仅用于测试数据。如果您要更改记录的实际内容,则应手动,使用代码或使用自己的SQL执行此操作。

来自Laravel文档:

播种https://laravel.com/docs/5.3/seeding

  

Laravel包含一种使用种子类为测试数据播种数据库的简单方法。

关于迁移https://laravel.com/docs/5.3/migrations

  

迁移就像数据库的版本控制一样,允许您的团队轻松修改和共享应用程序的数据库架构。

答案 1 :(得分:0)

一种优雅的种子方式是使用Laravel Excel - http://www.maatwebsite.nl/laravel-excel/docs

一个例子是(在你的跑步功能中)

        Excel::load(database_path('seeds/csv/your_seed_info.csv'), function($reader) {

        // Getting all results
            $results = $reader->get();

            foreach ($results as $item) {
            $comp = Model::create([

                'field1' => $item->field1,
                'field2' => $item->field2,
                    ....
                'fieldn' => $item->fieldn,
            ]);
        }

         }); 

请务必将其放在顶部 use Maatwebsite\Excel\Facades\Excel;

答案 2 :(得分:0)

这有点基于意见,但我认为现有行的某些更新适用于迁移。举个例子:

Schema::table('users', function($table) {
    // make passwords nullable for folks who use SSO
    $table->string('password')->nullable()->change();
});

User::where('password', '')->update(['password' => NULL]);

这是合适的,因为迁移需要调整任何现有数据以适应新架构。它是迁移的一部分 - 播种器没有意义,手动查询有可能被其他开发者或特定环境遗忘/遗忘。