Laravel6
Laravel6
не имеет метода id()
для создания id
в таблице. Laravel7
делает .. Я пытался создать id
с использованием $table->id()
с использованием Laravel6
и получил следующую ошибку.
Кажется, вы отправили неверную ошибку или вы уже создали id
вручную в своих таблицах .
Вы можете использовать bigIncrements
, bigInteger
, increments
, integer
et c.
Здесь вы можете найти все доступные методы
Laravel7
Согласно Laravel7
$table->id()
псевдоним псевдонима $table->bigIncrements('id')
, т. Е. unsigned big integer
.
Для создания Foreign key
тип данных для child column
должен точно соответствовать parent column
.
Поскольку users.id
и room_types.id
является bigIncrements
, тогда reservations.user_id
и reservations.room_type_id
также должны быть unsignedbigInteger
, а не unsignedInteger
.
заставить его работать
изменить
$table->unsignedInteger('user_id');
$table->unsignedInteger('room_type_id');
на
$table->unsignedBigInteger('user_id');
$table->unsignedBigInteger('room_type_id');
Как это:
public function up()
{
Schema::create('reservations', function (Blueprint $table) {
$table->id();
$table->integer('uid')->unique();
$table->timestamp('date');
$table->unsignedBigInteger('user_id');
$table->unsignedBigInteger('room_type_id');
$table->integer('adults')->default(1);
$table->integer('kids')->default(0);
$table->date('check_in');
$table->date('check_out');
$table->integer('number_of_room')->default(1);
$table->enum('status',['PENDING','CANCEL','SUCCESS'])->default('PENDING');
$table->timestamps();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('room_type_id')->references('id')->on('room_types')->onDelete('cascade');
});
}
https://laravel.com/docs/7.x/migrations#creating -колонки