Вот что я сделал:
Миграция ([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
Столбец create_at содержит названия компаний вместо меток времени.
Столбец user_id полностью отсутствует, хотя я использовал ForeignIdFor.
Код: Выделить всё
EmployerFactoryКод: Выделить всё
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Код: Выделить всё
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();
}
}
Код: Выделить всё
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
Мобильная версия