Laravel更新数据库记录运行脚本

Pau*_*nko 4 sql laravel artisan

我想使用工匠更新运行SQL脚本的数据库中的所有记录。例如,我需要执行以下命令:

UPDATE translations SET field = 'meta_desc' WHERE field = 'page_desc'
Run Code Online (Sandbox Code Playgroud)

Laravel的结构将是最佳解决方案?种子,移民,工厂?

Pau*_*nko 5

感谢大家的答复。特别感谢@RossWilson使用迁移来更改数据库数据的想法。

但是我认为,这不是一个好的解决方案,因为Laravel的概念涉及使用迁移来更改数据库结构。

阅读Laravel的手册后,我发现有一种特殊的代码结构可用于处理db的数据。这是种子。因此,我使用上面的示例查询的下一个种子解决了我的问题:

  1. 使用artisan命令创建了新的种子:

    php artisan make:seed UpdateTranslationsSeeder
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在run()方法内编写代码:

    DB::table('translations')->where('field', 'page_desc')->update(['field' => 'meta_desc']);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在工匠手中运行我的播种机:

    php artisan db:seed --class=UpdateTranslationsSeeder
    
    Run Code Online (Sandbox Code Playgroud)

注意:如果在控制台中运行最后一个命令后,我对类UpdateTranslationsSeeder的错误未定义,请在控制台中运行下一个命令,以告知Laravel有关新类的信息:

composer dump-autoload -o
Run Code Online (Sandbox Code Playgroud)