Миграция в вашем примере не будет выполняться из-за попытки использовать функции, которые недоступны в Laravel, или из-за неправильного использования этих функций. Я собрал новую миграцию и протестировал ее, и она работает нормально.
Schema::create('student', function (Blueprint $table) {
$table->string('student_id', 6)->primary_key()->nullable(false);
$table->string('student_name', 50)->nullable(false);
$table->enum('student_class', ['RPL-1', 'RPL-2', 'RPL-3'])->nullable(true);
$table->enum('student_gender', ['MALE', 'FEMALE'])->nullable(true);
$table->text('student_address')->nullable(true);
$table->tinyinteger('student_status')->default('1');
$table->timestamps();
});
Я предположил, что student_id
должен быть своего рода уникальным кодом в вашем приложении, поэтому я 'Мы изменили это, чтобы использовать функцию string
. Это создаст поле типа varchar со вторым параметром длиной строки.
Я также изменил параметры функции tinyinteger
для student_status
, похоже, вы пытаетесь указать все возможные значения, аналогично тому, как вы используете enum
. Тип tinyinteger
не может принимать список возможных значений, поэтому вы можете изменить его на булево (если состояние имеет значение true или false), перечисление или внешний ключ для связанной таблицы, если это уместно.
Если вы используете Eloquent ORM в своем приложении, может не потребоваться префикс всех имен столбцов с student
. При правильном использовании вы сможете просто использовать имя сохраняемой переменной, например student_name
станет name
.