2016-09-21 49 views
2

我现在有我的数据库的新结构,但我需要导入新格式的旧数据。出于这个原因,我想使用Laravel播种机,但我需要以某种方式连接到旧数据库并进行选择查询,并告诉播种机如何将数据放入新数据库。从现有的数据库Laravel种子数据库

这可能吗?

+0

我认为最好的方法是从旧的数据库工具,如phpMyAdmin的导出数据,修改数据,以适应新的数据库,然后上传它。 –

+0

通过修改你在编辑器中的意思? –

回答

0

配置您的laravel应用程序以使用两个mysql连接(How to use multiple database in Laravel),一个用于新数据库,另一个用于旧数据库。

我会假像它oldnew

在您的种子从旧数据库中读取并写入新的。

$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');甚至一个进度条(可以访问命令行方式)知道你是进口的这点。

+0

谢谢@phaberest,不幸的是我错过了一些东西。我已经做了第二个连接(mysql_old),并将其名称放在新的DB:connection('mysql_old')中。所有()它给我调用未定义的方法Query \ Builder :: all()。我已经尝试使用select(),我把一个print_r($ old_users);这里出现了奇怪的部分。它打印出整个MysqlConnection对象,但在配置部分名称为'mysql_old',但数据库与'mysql'连接错误。 –

+0

确保你没有在'config/database.php'中引用任何'.env'变量,因为它们优先于任何其他设置。你发现我......它必须是'get()'而不是'all()':D – phaberest

+0

谢谢@phaberest! –

1

尝试: 例子:

php artisan iseed my_table 
php artisan iseed my_table,another_table 

访问:https://github.com/orangehill/iseed

+0

这个包的问题是我们想要创建播种机的表我们必须告诉它 在我的情况下,我想为所有表创建一个播种机,并且此包失败实现这一目标。 如果我错过了一些东西,请指教 – Gardezi