エンジニ屋.com(エンジニヤドットコム)

日々得たWebエンジニアに関する情報をアウトプットしてます!

【Laravel】migrationでinsert データ追加

本記事は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 email password
1 Morishi test@enginiya.com $2y$10$cv8z8wrTkZJC6DQXqAfcnOurDR5pEQc.Oel5a4H2y.fTFyQ3CSbam

ちなみに複数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でセットすると保存できます。

お疲れ様です!

参考になったー✌️というかたは、よければ下記のスターボタンを押して下さい! あとよかったらツイッターの登録もお願いします!