#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 этой таблицы
Комментарии:
1. в чем проблема и каково ожидаемое поведение?
2. В чем ошибка?
3. Я ожидал, что столбцы будут обнуляемыми, но этого не произошло. Я узнал, что я должен написать nullable перед ограничением
Ответ №1:
Любые дополнительные модификаторы столбцов должны быть вызваны перед ограничением,
Поэтому вы должны поместить nullable() перед constrainted() следующим образом :
$table->foreignId('course_id')->nullable()->constrained('courses');