我一直认为迁移是创建/改变表的结构。但是,我需要更新我们的实时数据库中的值。迁移是否是正确的方法 - 或者我应该运行自己的SQL吗?
答案 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]);
这是合适的,因为迁移需要调整任何现有数据以适应新架构。它是迁移的一部分 - 播种器没有意义,手动查询有可能被其他开发者或特定环境遗忘/遗忘。