Laravel 更新数据库记录 运行 脚本
Laravel update database record running script
我想使用 artisan 更新我的数据库 运行 SQL 脚本中的任何记录。例如,我需要执行这样的命令:
UPDATE translations SET field = 'meta_desc' WHERE field = 'page_desc'
什么 Laravel 的结构是最好的解决方案?种子、移民、工厂?
感谢大家的回复。特别感谢@RossWilson 提出的使用迁移更改数据库数据的想法。
但我认为,这不是一个好的解决方案,因为Laravel的概念涉及使用迁移来改变数据库结构。
阅读 Laravel 的手册后,我发现有一个特殊的代码结构用于处理数据库的数据。这是一个Seed。因此,我使用上面示例查询的下一个种子解决了我的问题:
使用 artisan 命令创建了新种子:
php artisan make:seed UpdateTranslationsSeeder
在运行()方法中写一段代码:
DB::table('translations')->where('field', 'page_desc')->update(['field' => 'meta_desc']);
运行 我的播种机在 artisan:
php artisan db:seed --class=UpdateTranslationsSeeder
注意:如果在 运行 在控制台中执行最后一个命令后,我得到一个关于 class UpdateTranslationsSeeder 未定义的错误 运行 控制台中的下一个命令告诉 Laravel 关于新 classes:
composer dump-autoload -o
出于教育目的,我采用了 Paul Basenko 方法来更新现有数据。 非常有用!这是我的例子:
生成播种机:
php artisan make:seed UpdateCustomerSeeder
在运行方法中添加代码:
$customers = Customer::all();
$customers->each(function ($customer_update, $key) {
$faker = Factory::create('it_IT');
$customer_update->name = $faker->company;
$customer_update->website = $faker->domainName;
$customer_update->tax_number = $faker->vatId();
$customer_update->phone = $faker->phoneNumber;
$customer_update->email = $faker->safeEmail;
$customer_update->street = $faker->streetAddress;
$customer_update->city = $faker->city;
$customer_update->zip_code = $faker->postcode;
$customer_update->notes = $faker->sentence();
$customer_update->save();
});
运行 播种机:
php artisan db:seed --class=UpdateCustomerSeeder
我想使用 artisan 更新我的数据库 运行 SQL 脚本中的任何记录。例如,我需要执行这样的命令:
UPDATE translations SET field = 'meta_desc' WHERE field = 'page_desc'
什么 Laravel 的结构是最好的解决方案?种子、移民、工厂?
感谢大家的回复。特别感谢@RossWilson 提出的使用迁移更改数据库数据的想法。
但我认为,这不是一个好的解决方案,因为Laravel的概念涉及使用迁移来改变数据库结构。
阅读 Laravel 的手册后,我发现有一个特殊的代码结构用于处理数据库的数据。这是一个Seed。因此,我使用上面示例查询的下一个种子解决了我的问题:
使用 artisan 命令创建了新种子:
php artisan make:seed UpdateTranslationsSeeder
在运行()方法中写一段代码:
DB::table('translations')->where('field', 'page_desc')->update(['field' => 'meta_desc']);
运行 我的播种机在 artisan:
php artisan db:seed --class=UpdateTranslationsSeeder
注意:如果在 运行 在控制台中执行最后一个命令后,我得到一个关于 class UpdateTranslationsSeeder 未定义的错误 运行 控制台中的下一个命令告诉 Laravel 关于新 classes:
composer dump-autoload -o
出于教育目的,我采用了 Paul Basenko 方法来更新现有数据。 非常有用!这是我的例子:
生成播种机:
php artisan make:seed UpdateCustomerSeeder
在运行方法中添加代码:
$customers = Customer::all(); $customers->each(function ($customer_update, $key) { $faker = Factory::create('it_IT'); $customer_update->name = $faker->company; $customer_update->website = $faker->domainName; $customer_update->tax_number = $faker->vatId(); $customer_update->phone = $faker->phoneNumber; $customer_update->email = $faker->safeEmail; $customer_update->street = $faker->streetAddress; $customer_update->city = $faker->city; $customer_update->zip_code = $faker->postcode; $customer_update->notes = $faker->sentence(); $customer_update->save(); });
运行 播种机:
php artisan db:seed --class=UpdateCustomerSeeder