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