Я получаю, что имя производителя не имеет значения, даже если оно ссылается на столбец идентификатора в таблице производителей, которая уже создана в базе данных и находится в одной строке с именем производителя. Почему так? Вот код:
Таблица производителя
Schema::create('manufacturer', function (Blueprint $table) {
$table->bigIncrements('id')->autoIncrement();
$table->string('manufacturer_name');
$table->string('name');
$table->timestamps();
});
Самолет стол
Schema::create('planes', function (Blueprint $table) {
$table->bigIncrements('id')->autoIncrement();
$table->string('icao24');
$table->bigInteger('manufacturer_name')->unsigned()->default(1);
$table->foreign('manufacturer_name')->references('id')->on('manufacturer');
$table->timestamps();
});
Вставка значений:
Таблица производителя:
$file = fopen('https://opensky-network.org/datasets/metadata/aircraftDatabase.csv', 'r');
$headersArray = [];
$i = 0;
$headers = fgetcsv($file);
foreach ($headers as $key => $value) {
array_push($headersArray, $value);
}
while ($i < 50) {
$line = fgetcsv($file);
$comb = array_combine($headersArray, $line);
DB::table('manufacturer')->insert(array(
'name' => $comb['manufacturername'],
'created_at' => date('Y-m-d H:m:s'),
'updated_at' => date('Y-m-d H:m:s')
)); .....
Таблица самолетов:
Тот же цикл, только другая схема:
DB::table('planes')->insert(array(
'icao24' => $comb['icao24'],
'created_at' => date('Y-m-d H:m:s'),
'updated_at' => date('Y-m-d H:m:s')
));
Я ожидаю, что инкрементные идентификаторы будут в таблице плоскостей внутри столбца factory_name, который указывает на имя производителя в таблице Manufacturer. Теперь это просто значение по умолчанию 1 во всех строках.
Вот как выглядит БД производителя:
введите описание изображения здесь
Я хочу, чтобы эти идентификаторы 2, 3, 4 ... находились внутри таблицы плоскостей как внешние ключи в столбце имени производителя, но теперь они выглядят так:
введите описание изображения здесь
Ценю помощь.