2016-09-21 14 views
2

이제 데이터베이스의 새로운 구조가 생겼으나 이전 데이터를 새 형식으로 가져와야합니다. 그런 이유로 나는 Laravel seeder를 사용하고 싶지만 이전 데이터베이스에 연결하여 select 쿼리를 만들고 seeder에게 새 데이터베이스에 데이터를 저장하는 방법을 알려줄 필요가 있습니다.기존 데이터베이스의 Laravel seed 데이터베이스

그럴 수 있습니까?

+0

내가 가장 좋은 건, phpMyAdmin과 같은 도구를 사용하여 이전 데이터베이스에서 데이터를 내보낼 새에 맞게 데이터를 수정하는 것입니다 생각 데이터베이스에 업로드 한 다음 업로드하십시오. 편집기에서 do mean을 수정하여 –

+0

을 작성 하시겠습니까? –

답변

0

2 개의 mysql 연결 (How to use multiple database in Laravel)을 사용하도록 laravel 응용 프로그램을 구성하십시오. 하나는 새 데이터베이스 용이고 다른 하나는 이전 데이터베이스 용입니다.

oldnew처럼 가짜로 만듭니다.

귀하의 종자에서 이전 데이터베이스를 읽고 새 것으로 작성하십시오. 같은 $this->command->info('Users table seeded'); 또는 진행률 표시 줄을 뿌리는 동안

$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 
     // ... 
    ]); 
} 

당신이 수입의 어느 시점에서 알고 (당신이 명령 줄 방법에 액세스 할 수 있습니다) 메시지를 추가해야합니다.

+0

감사합니다, @ 불행히도 나는 뭔가를 놓친다. 예제에서와 같이 두 번째 연결 (mysql_old)을 만들고 새 DB에 연결 이름 ('mysql_old')을 넣습니다. all()을 사용하면 정의되지 않은 메서드 Query \ Builder :: all()을 호출합니다. 나는 select()로 시도하고 print_r ($ old_users); 여기 이상한 부분이옵니다. 그것은 전체 MysqlConnection 객체를 출력하지만 config 부분에서 이름은 'mysql_old'이지만 데이터베이스는 'mysql'연결에서 잘못된 것입니다. –

+0

'config/database.php'에서'.env' 변수를 참조하지 않도록하십시오. 다른 변수보다 우선합니다. 당신은 나를 잡았습니다 ... 그것은'all()'대신에'get()'이되어야합니다 : D – phaberest

+0

@phaberest! –

1

시도 : 예 :

php artisan iseed my_table 
php artisan iseed my_table,another_table 

방문 : https://github.com/orangehill/iseed

+0

이 패키지의 문제는 우리가 그것에 대해 말해야하는 시더를 만들고자하는 테이블입니다. 제 경우에는 모든 테이블에 대한 시더를 만들고 싶지만이 패키지는 실패합니다 목표 달성. 내가 뭔가를 놓친다면 조언을주십시오. – Gardezi