Laravel 来自现有数据库的种子数据库
Laravel seed database from existing database
我现在有了我的数据库的新结构,但我需要以新格式导入旧数据。出于这个原因,我想使用 Laravel 播种机,但我需要以某种方式连接到旧数据库并进行 select 查询并告诉播种机如何将数据放入新数据库中。
这可能吗?
将您的 laravel 应用配置为使用两个 mysql 连接 (),一个用于新数据库,另一个用于旧数据库。
我会伪装成 old
和 new
。
在您的种子中,从旧数据库读取并写入新数据库。
$old_user = DB::connection('old')->table('users')->get();
foreach ($old_users as $user) {
DB::connection('new')->table('users')->insert([
'name' => $user->name,
'email' => $user->email,
'password' => $user->password,
'old_id' -> $user->id
// ...
]);
}
确保在播种时添加消息,例如 $this->command->info('Users table seeded');
甚至是进度条(您可以访问命令行方法)以了解您处于导入的哪个阶段。
尝试:
示例:
php artisan iseed my_table
php artisan iseed my_table,another_table
从
下载包
Git 回购:https://github.com/orangehill/iseed
然后更新以下文件 src/Orangehill/Iseed/IseedCommand。php
在第 75
行添加以下代码
// update package script
if($this->argument('tables') === null){
$tables = Schema::getConnection()->getDoctrineSchemaManager()->listTableNames();
}
并使用以下代码更新同一文件中的 getArguments 方法
array('tables', InputArgument::OPTIONAL, 'comma separated string of table names'),
然后是 运行 php artisan iseed
所以它将从现有数据库中获取所有表并开始为所有表创建播种机
我现在有了我的数据库的新结构,但我需要以新格式导入旧数据。出于这个原因,我想使用 Laravel 播种机,但我需要以某种方式连接到旧数据库并进行 select 查询并告诉播种机如何将数据放入新数据库中。
这可能吗?
将您的 laravel 应用配置为使用两个 mysql 连接 (
我会伪装成 old
和 new
。
在您的种子中,从旧数据库读取并写入新数据库。
$old_user = DB::connection('old')->table('users')->get();
foreach ($old_users as $user) {
DB::connection('new')->table('users')->insert([
'name' => $user->name,
'email' => $user->email,
'password' => $user->password,
'old_id' -> $user->id
// ...
]);
}
确保在播种时添加消息,例如 $this->command->info('Users table seeded');
甚至是进度条(您可以访问命令行方法)以了解您处于导入的哪个阶段。
尝试: 示例:
php artisan iseed my_table
php artisan iseed my_table,another_table
从
下载包
Git 回购:https://github.com/orangehill/iseed
然后更新以下文件 src/Orangehill/Iseed/IseedCommand。php
在第 75
// update package script
if($this->argument('tables') === null){
$tables = Schema::getConnection()->getDoctrineSchemaManager()->listTableNames();
}
并使用以下代码更新同一文件中的 getArguments 方法
array('tables', InputArgument::OPTIONAL, 'comma separated string of table names'),
然后是 运行 php artisan iseed
所以它将从现有数据库中获取所有表并开始为所有表创建播种机