Миграция Laravel создает неправильные столбцы и несоответствие данных в таблице работодателейPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Миграция Laravel создает неправильные столбцы и несоответствие данных в таблице работодателей

Сообщение Anonymous »

Я создаю проект доски объявлений в Laravel и пытаюсь установить связь «один к одному» между пользователем и работодателем. Однако моя таблица базы данных генерируется неправильно — столбцы не совпадают.
Вот что я сделал:

Миграция ([code]database/migrations/xxxx_xx_xx_create_employers_table.php[/code])

Код: Выделить всё

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
public function up(): void
{
Schema::create('employers', function (Blueprint $table) {
$table->id();
$table->foreignIdFor(\App\Models\User::class);
$table->string('name');
$table->timestamps();
});
}

public function down(): void
{
Schema::dropIfExists('employers');
}
};
Но после запуска:

Код: Выделить всё

php artisan migrate:fresh --seed
Моя таблица базы данных выглядит следующим образом:

Код: Выделить всё

id | name | created_at | updated_at
1  | 2  | Company name | dates
Столбец name показывает цифры вместо названий компаний.
Столбец create_at содержит названия компаний вместо меток времени.
Столбец user_id полностью отсутствует, хотя я использовал ForeignIdFor.

Код: Выделить всё

EmployerFactory
:[/b]

Код: Выделить всё

namespace Database\Factories;

use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;

class EmployerFactory extends Factory
{
public function definition(): array
{
return [
'name' => $this->faker->company(),
'user_id' => User::factory(),
];
}
}

Код: Выделить всё

DatabaseSeeder
:[/b]

Код: Выделить всё

namespace Database\Seeders;

use App\Models\User;
use App\Models\Job;
use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
public function run(): void
{
User::factory()->create([
'name' => 'Test User',
'email' => 'test@example.com',
]);

Job::factory(100)->create();
}
}
Я ожидал, что Laravel создаст таблицу работодателей со столбцами:

Код: Выделить всё

id | user_id | name | created_at | updated_at
и заполните имя названиями компаний.
Но вместо этого данные неуместны и схема неверна. Я уже пробовал:
  • Код: Выделить всё

    php artisan migrate:fresh --seed
  • Удаление и повторное создание файла базы данных
  • Проверка соответствия миграции фабрике
Однако ничего не меняется.
Что может заставить Laravel игнорировать или неправильно применять столбец ForeignIdFor() и вставлять несовпадающие данные в другие столбцы?
Я использую Laravel 11, PHP 8.2

Подробнее здесь: https://stackoverflow.com/questions/798 ... yers-table
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»