2016-09-21 1 views
2

У меня теперь есть новая структура моей базы данных, но мне нужно импортировать старые данные в новый формат. По этой причине я хочу использовать сеялку Laravel, но мне нужно как-то подключиться к старой базе данных и сделать выборные запросы и рассказать сеялке, как поместить данные в новую базу данных.База данных семян Laravel из существующей базы данных

Возможно ли это?

+0

Я думаю, что вам лучше всего экспортировать данные из старой базы данных с помощью такого инструмента, как PhpMyAdmin, модифицировать данные, чтобы соответствовать вашему новому и загрузите его. –

+0

путем изменения do u означает в редакторе? –

ответ

0

Настройте приложение 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'); или даже индикатор прогресса (вы можете получить доступ к методам командной строки), чтобы знать, в какой момент импорта вы.

+0

Спасибо @phaberest, к сожалению, я что-то пропустил. Я сделал второе соединение (mysql_old), как в примере, и поместил его в новый DB: connection ('mysql_old'). Со всем() он дает мне вызов неопределенного метода Query \ Builder :: all(). Я попытался с select(), и я поставил print_r ($ old_users); и здесь идет странная часть. Он печатает мне весь объект MysqlConnection, но в части конфигурации имя «mysql_old», но база данных является неправильной для соединения «mysql». –

+0

Убедитесь, что вы не ссылаетесь на переменную '.env' в вашей' config/database.php', поскольку они имеют приоритет над любыми другими параметрами. Вы поймали меня ... это должно быть 'get()' вместо 'all()': D – phaberest

+0

спасибо @phaberest! –

1

Try: Примеров:

php artisan iseed my_table 
php artisan iseed my_table,another_table 

визит: https://github.com/orangehill/iseed

+0

проблема с этим пакетом - это таблицы, из которых мы хотим создать сеялку, которую мы должны рассказать об этом В моем случае я хочу создать сеялку для всех таблиц, и этот пакет не сработает для достижения этой цели. Если мне что-то не хватает, пожалуйста, советую – Gardezi