Я пытаюсь заполнить свои базы данных, и у меня есть родительская таблица status
и дочерняя таблица server_statuses
. Это отношения один ко многим.
Проблема, с которой я сталкиваюсь, состоит в том, что таблица состояний имеет только 3 значения, и им необходимо установить конкретные значения (success, warning, danger
). Документация Larvaels не дает глубоких сведений о том, как этого добиться.
Я также не уверен, является ли причиной того, что я получаю ошибку, из-за посева. Если это не заполнение, я подумал, что мог бы вручную ввести 3 значения в PHPmyAdmin, а затем запустить сеялку БД. Я также опубликую свою миграцию и файлы сеялки.
Есть мысли по поводу решения этой ошибки?
Текущая ошибка при работе сеялки:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constrai
ENCES `statuses` (`id`)) (SQL: insert into `server_statuses` (`server_id`, `status_id`, `updated_at`, `created_at`) values (20, 4, 2018-07-03 12:21:05,
Миграции:
Schema::create('statuses', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->string('key');
$table->string('status');
$table->timestamps();
});
Schema::create('server_statuses', function (Blueprint $table) {
$table->engine = 'InnoDB';
$table->increments('id');
$table->integer('server_id')->unsigned();
$table->foreign('server_id')->references('id')->on('servers')->onDelete('cascade');
$table->integer('status_id')->unsigned();
$table->foreign('status_id')->references('id')->on('statuses');
$table->timestamps();
});
Фабрика сеялок (deletd, что я пытался для статуса, потому что это была ужасная попытка решения):
$factory->define(Status::class, function (Faker $faker) {
return [
'key' => ,
'status' =>
];
});
$factory->define(ServerStatus::class, function (Faker $faker) {
return [
'server_id' => $faker->numberBetween($min = 1, $max = 20),
'status_id' => $faker->numberBetween($min = 1, $max = 3)
];
});