Я пытаюсь создать внешние ключи в Laravel, однако при переносе таблицы с использованием «artisan» выдается следующая ошибка, и я не знаю, почему:
Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1215
Cannot add foreign key
constraint (SQL: alter table `positions` add constraint
`positions_car_id_foreign`
foreign key (`car_id`) references `cars` (`id`))
Настольный автомобиль должен иметь уникальный идентификатор, и для каждого автомобиля есть много разных позиций (широта и долгота). Идентификатор автомобиля - это внешний ключ.
Файл миграции автомобиля:
class Car extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('cars',function (Blueprint $table){
$table->integer('id')->unique();
$table->string('name');
$table->string('location');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('cars');
}
}
Файл миграции Postion:
class Position extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('positions',function (Blueprint $table){
$table->engine = 'InnoDB';
$table->timestamps();
$table->integer('car_id')->unsigned();
$table->double('latitude');
$table->double('longitude');
});
Schema::table('positions',function (Blueprint $table) {
$table->foreign('car_id')->references('id')->on('cars');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('positions');
}
}