обнуляемый внешний ключ миграции laravel

#laravel #migration

#laravel #миграция

Вопрос:

Я создаю проект с Laravel версии 7.25.0. Я закодировал свои файлы миграции, и они содержат некоторые внешние ключи. Я добавил nullable() в конце каждого внешнего ключа, но они не работают. Я просмотрел похожие вопросы, но ни один из них не решил мою проблему. Вот функция запуска моего файла миграции

     {
        Schema::create('tests', function (Blueprint $table) {
            $table->id();
            $table->string('title')->nullable();
            $table->tinyInteger('level')->nullable();
            $table->tinyInteger('try_count')->nullable();
            $table->char('room_name')->nullable();
            $table->boolean('timeless')->nullable();
            $table->integer('time')->nullable();
            $table->foreignId('school_id')->constrained('schools')->nullable();
            $table->foreignId('year_id')->constrained('years')->nullable();
            $table->foreignId('course_id')->constrained('courses')->nullable();
            $table->string('type')->nullable();
            $table->date('start_date')->nullable();
            $table->date('end_date')->nullable();
            $table->time('start_time')->nullable();
            $table->time('end_time')->nullable();
            $table->text('description')->nullable();
            $table->boolean('timeout')->nullable();
            $table->boolean('question_sorting')->nullable();
            $table->timestamps();
        });
    }
  

когда я переношу его с другими файлами и не получаю никаких ошибок, это моя страница phpmyadmin этой таблицы

таблица страниц phpadmin ss

Комментарии:

1. в чем проблема и каково ожидаемое поведение?

2. В чем ошибка?

3. Я ожидал, что столбцы будут обнуляемыми, но этого не произошло. Я узнал, что я должен написать nullable перед ограничением

Ответ №1:

Любые дополнительные модификаторы столбцов должны быть вызваны перед ограничением,

Поэтому вы должны поместить nullable() перед constrainted() следующим образом :

 $table->foreignId('course_id')->nullable()->constrained('courses');