从现有的数据库Laravel种子数据库
我现在有我的数据库的新结构,但我需要导入新格式的旧数据。出于这个原因,我想使用Laravel播种机,但我需要以某种方式连接到旧数据库并进行选择查询,并告诉播种机如何将数据放入新数据库。从现有的数据库Laravel种子数据库
这可能吗?
配置您的laravel应用程序以使用两个mysql连接(How to use multiple database in Laravel),一个用于新数据库,另一个用于旧数据库。
我会假像它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');
甚至一个进度条(可以访问命令行方式)知道你是进口的这点。
谢谢@phaberest,不幸的是我错过了一些东西。我已经做了第二个连接(mysql_old),并将其名称放在新的DB:connection('mysql_old')中。所有()它给我调用未定义的方法Query \ Builder :: all()。我已经尝试使用select(),我把一个print_r($ old_users);这里出现了奇怪的部分。它打印出整个MysqlConnection对象,但在配置部分名称为'mysql_old',但数据库与'mysql'连接错误。 –
确保你没有在'config/database.php'中引用任何'.env'变量,因为它们优先于任何其他设置。你发现我......它必须是'get()'而不是'all()':D – phaberest
谢谢@phaberest! –
尝试: 例子:
php artisan iseed my_table
php artisan iseed my_table,another_table
这个包的问题是我们想要创建播种机的表我们必须告诉它 在我的情况下,我想为所有表创建一个播种机,并且此包失败实现这一目标。 如果我错过了一些东西,请指教 – Gardezi
我认为最好的方法是从旧的数据库工具,如phpMyAdmin的导出数据,修改数据,以适应新的数据库,然后上传它。 –
通过修改你在编辑器中的意思? –