Php 我应该在Laravel数据库迁移上操作数据吗?或者我应该在别的地方做?
我正在计划对数据库进行一次重大更改,这将需要一组SQL指令(可能还有一个非SQL脚本)来将旧数据适应新模式Php 我应该在Laravel数据库迁移上操作数据吗?或者我应该在别的地方做?,php,sql,laravel,migration,laravel-migrations,Php,Sql,Laravel,Migration,Laravel Migrations,我正在计划对数据库进行一次重大更改,这将需要一组SQL指令(可能还有一个非SQL脚本)来将旧数据适应新模式 现在,在迁移脚本上操作数据是个好主意吗?或者它只是用于模式(DB结构)更改?数据操作不是迁移的事情。因为自然迁移是有效的。我将建议使用迁移只定义数据库模式 迁移是由Laravel按照创建的确切顺序逐个执行的,因此它可以跟踪执行情况和执行顺序参考Antonio Carlos Ribeiro 这会阻止一个人负责他/她想要运行的类或文件。例如,您可以选择在departments表之前为users
现在,在迁移脚本上操作数据是个好主意吗?或者它只是用于模式(DB结构)更改?数据操作不是迁移的事情。因为自然迁移是有效的。我将建议使用迁移只定义数据库模式 迁移是由Laravel按照创建的确切顺序逐个执行的,因此它可以跟踪执行情况和执行顺序参考Antonio Carlos Ribeiro 这会阻止一个人负责他/她想要运行的类或文件。例如,您可以选择在departments表之前为users表设置种子,也可以选择在departments表之前设置种子,反之亦然。移民并不是伴随着这种自由而来的 对于数据操作,我建议您使用seeders来处理它,因为您可以通过使用 php artisan db:seed--class=ClassName
正如名字所说,种子。这意味着填充数据库。在考虑迁移时,有两个问题很重要
$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 .')
');
}
可以使用迁移,但是。。。我不得不建议不要进行大改动的迁移。如果PHP代码超时会发生什么?如果内存不足怎么办。相反,保留原始数据库。复制/创建一个可以更改的全新环境。您可以将用户转发到新站点或更改DNS记录。如果出现问题,您需要能够恢复。有备用计划@jjwdesign很好。但是,这是一个CLI脚本,我设置它不超时,并且此迁移将在我当前的数据集上运行,当时数据集非常小。但数据库正在增长(这组变化是由于增长)。