WEB/システム/IT技術ブログ

Laravelのシーディング機能を使ってデータを移行する

update : 2020/04/26

Laravelのシーディング機能を使ってデータを移行します。

現在、とある別フレームワークで構築した旧システムをから、Laravelを利用したシステムへと移行しています。
DBのデータを移行する必要があり、バッチ処理を実装しなければいけないと考えていたのですが、Laravelにはシーディングという便利な機能があるみたいなので、早速トライします。

シーダーファイル作成

シーディングでは、まず処理を記述したシーダーファイルを用意します。
シーターファイルはartisanコマンドで作成することができます。例えば、ユーザ情報を移行する処理「UsersTableSeeder」を作成します。

> php artisan make:seeder UsersTableSeeder

コマンドを実行するとファイル「/database/seeds/UsersTableSeeder.php」が作成されます。内容は以下のとおりです。

use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
	public function run()
	{
		//
	}
}

関数「run」の中に、データ移行に必要な処理を記述します。
今回の場合は、旧システムのDBからユーザ情報を取り出し、LaravelのDBにInsertするような処理を実装しますが、その詳細は割愛します。

シーダーファイル登録

シーダーファイルを実行するためには、事前に登録する必要があります。
ファイル「/database/seeds/DatabaseSeeder.php」を開き、以下のようにして作成したシーダーを登録します。

class DatabaseSeeder extends Seeder
{
	public function run()
	{
		$this->call(UsersTableSeeder::class);
	}
}

以上で準備は完了です。

シーディング実行

シーディングを実行するためには、まず、以下のコマンドを実行してcomposerのオートローダを再生成します。

> composer dump-autoload

次に、以下のコマンドを実行することで、登録したシーダーが処理されます。

> php artisan db:seed

独自にバッチを作成すると、新旧システムの依存の考慮などめんどくさいこともありますが、こういう機能が用意されてると作業がスムーズになるので助かりますね。

B!

Comment

Comment Form

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Monthly Archives