本記事はmigrationでデータを追加する方法を紹介します。
基本的にlaravelでテストデータを追加したいときはseederを使用します。
しかし、例えばuserテーブルに管理者用のパスワードを1つだけ追加したいというときに、わざわざseederを作るのも…っていうときがあります。
そんな時はmigrationファイルのテーブルを生成するソースコードと一緒にinsertを追加すればそのような手間が防げます。
あとseederは何度もコマンドを実行できてしまうので、間違ってコマンドを2回実行してしまい不要なデータを増やしてしまったっということもmigrationでは防げます!
migrationにinsertを追加
migrationファイル作成部分については割愛いたします。
userテーブル作成用に用意されているmigrationのファイルを開きます。
database\migrations\2014_10_12_000000_create_users_table.php
※日付部分はバージョンによって異なります。
class CreateUsersTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); }); //ここから記述 \DB::table('users')->insert([ 'id' => null, 'name' => 'Morishi', 'email' => 'test@enginiya.com', 'password' => \Hash::make('password123'), ]); }
クエリビルダのinsertを記述しています。
実際に保存できるか確認します。
php artisan migrate //ターミナルでマイグレートを実行
DBにuserテーブルが生成された同時に下記のようにデータが追加されました!
id | name | password | |
---|---|---|---|
1 | Morishi | test@enginiya.com | $2y$10$cv8z8wrT.... |
ちなみに複数insertを行いたい場合は、こういう書き方も出来ます。
$qb = \DB::table('users'); $insert = [ [ 'id' => null, 'name' => 'Morishi', 'email' => 'test@enginiya.com', 'password' => \Hash::make('password123'), ], [ 'id' => null, 'name' => 'Morishi_2', 'email' => 'test2@enginiya.com', 'password' => \Hash::make('password456'), ] ]; $qb->insert($insert);
多次元配列に各カラムと値を記述して最後にinsertでセットすると保存できます。
お疲れ様です!
参考になったー✌️というかたは、よければ下記のスターボタンを押して下さい! あとよかったらツイッターの登録もお願いします!