jankenpon0205
@jankenpon0205 (002 ruru)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

エラー文を解析して修正したいです。

解決したいこと

動画を参考にマイグレーションをしてDBのテーブルを作っていたのですが、「php artisan migrate」をしたとき写真のようなエラーが起きました。初心者なのでどういうことが誰か教えてほしいです。

また、解決方法も教えていただくと幸いです。

また、作ったテーブルは以下のとおりで触れたコードは「create_users_table.php」と「create_categories_table.php」、「create_posts_table」、「create_comments_table.php」です。
こちらも間違いがありましたら教えていただきたいです。

【使用しているバージョン】
Laravel(ver.8系)
PHP 8.2.4
Composer version 2.7.7

image.png

create_users_table.php

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->string('email')->unique();
            $table->timestamp('email_verified_at')->nullable();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

create_password_resets_table.php

public function up()
    {
        Schema::create('password_resets', function (Blueprint $table) {
            $table->string('email')->index();
            $table->string('token');
            $table->timestamp('created_at')->nullable();
        });
    }

create_failed_jobs_table.php

public function up()
    {
        Schema::create('failed_jobs', function (Blueprint $table) {
            $table->id();
            $table->string('uuid')->unique();
            $table->text('connection');
            $table->text('queue');
            $table->longText('payload');
            $table->longText('exception');
            $table->timestamp('failed_at')->useCurrent();
        });
    }

create_personal_access_tokens_table.php

 public function up()
    {
        Schema::create('personal_access_tokens', function (Blueprint $table) {
            $table->id();
            $table->morphs('tokenable');
            $table->string('name');
            $table->string('token', 64)->unique();
            $table->text('abilities')->nullable();
            $table->timestamp('last_used_at')->nullable();
            $table->timestamps();
        });
    }

create_categories_table.php

public function up()
    {
        Schema::create('categories', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('category_name')->nullable();
            $table->timestamps();
        });
    }

create_posts_table.php

public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->bigIncrements('id');

            $table->bigInteger('user_id')->unsigned()->index();
            $table->bigInteger('category_id')->unsigned()->index();

            $table->string('title')->nullable();
            $table->text('content')->nullable();

            $table->foreign('user_id')->eferences('id')->on('users')->onDelete('cascade');
            $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
            $table->timestamps();
        });
    }

create_comments_table.php

public function up()
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->bigIncrements('id');

            $table->bigInteger('user_id')->unsigned()->index();
            $table->bigInteger('post_id')->unsigned()->index();

            $table->string('comment')->nullable();

            $table->foreign('post_id')->references('id')->on('poosts')->onDelete('cascade');
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
            $table->timestamps();
        });
    }

自分で試したこと

修正した後、mysqlに入って写真のようにDBを再度作り、「php artisan migrate」をしましたが、先ほどの写真のようにエラーが起きてしまいました。

image.png

0

1Answer

create_posts_table.php の以下の行で referenceseferences と打ち間違えているせいだと思います。

            $table->foreign('user_id')->eferences('id')->on('users')->onDelete('cascade');

それと、今回のエラーとは関係ありませんが create_comments_table.php で 'posts''poosts' と打ち間違えています。

1Like

Your answer might help someone💌