0

おはようございます、

工場からデータベースにデータを送信できません。

SQLSTATE[HY000]: General error: 1364 Field 'genre_id' doesn't have a default value (SQL: insert into `books` (`isbn`, `title`, `publish_date`, `updated_at`, `created_at`) values (4243421897, Prof., 1992-09-08 00:57:41, 2020-03-10 15:02:36, 2020-03-10 15:02:36))

移行でforeign_keysにデフォルト値がないことを指定する必要があるかどうかはわかりません...

これらは私のファイルです:

create_books_table.php

 public function up()
    {
        Schema::create('books', function (Blueprint $table) {
            $table->engine = 'InnoDB';

            $table->id('isbn');
            $table->string('title' , 100);
            $table->text('cover')->nullable();
            $table->date('publish_date');
            $table->bigInteger('genre_id')->unsigned();
            $table->bigInteger('author_id')->unsigned();
            $table->bigInteger('user_id')->unsigned();
            $table->timestamps();

            $table->foreign('genre_id')
                ->references('id')->on('Genres')
                ->onUpdate('cascade')
                ->onDelete('cascade');

            $table->foreign('author_id')
                ->references('id')->on('Authors')
                ->onUpdate('cascade')
                ->onDelete('cascade');

            $table->foreign('user_id')
                ->references('id')->on('Readers')
                ->onUpdate('cascade')
                ->onDelete('cascade');
        });
    }

BookFactory.php

$factory->define(Book::class, function (Faker $faker) {
    return [
        'isbn' => $faker->isbn10,
        'title' => $faker->title,
        'publish_date' => $faker->dateTime()
    ];
});

web.php で「ルート」をまだ作成していないため、CRUD も行っていません。ブレードも変更していませんが、とりあえずデータベース全体をセットアップしたいと思います。しかし、それが問題ではないのだろうか。

これが私のデータベースの回路図です: https://imgur.com/a/8Txn7x2 (まだ画像のアップロードは許可されていません。)

(私はコーディングスクールに通っています)

ありがとうございました!

4

1 に答える 1