1. ホーム
  2. php

[解決済み] Laravelのマイグレーションファイルでデータベースにデータを投入する

2022-04-29 02:10:45

質問

Laravelを学び始めたばかりで、usersテーブルを作成するマイグレーションファイルが動作しています。マイグレーションの一環として、ユーザーレコードに入力しようとしています。

public function up()
{
    Schema::create('users', function($table){

        $table->increments('id');
        $table->string('email', 255);
        $table->string('password', 64);
        $table->boolean('verified');
        $table->string('token', 255);
        $table->timestamps();

        DB::table('users')->insert(
            array(
                'email' => '[email protected]',
                'verified' => true
            )
        );

    });
}

しかし、実行時に以下のようなエラーが発生します。 php artisan migrate :

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'vantage.users' doesn't exist

これは明らかにArtisanがまだテーブルを作成していないためですが、すべてのドキュメントには、Fluent Queryを使用してマイグレーションの一部としてデータを入力する方法があるように書かれています。

どなたか方法をご存じないでしょうか?ありがとうございます。

解決方法は?

DB::insert() を Schema::create() の中に入れてはいけません。なぜなら create メソッドはテーブルを作り終えてからでないと、ものを挿入することができないからです。代わりにこれを試してみてください。

public function up()
{
    // Create the table
    Schema::create('users', function($table){
        $table->increments('id');
        $table->string('email', 255);
        $table->string('password', 64);
        $table->boolean('verified');
        $table->string('token', 255);
        $table->timestamps();
    });

    // Insert some stuff
    DB::table('users')->insert(
        array(
            'email' => '[email protected]',
            'verified' => true
        )
    );
}