class Customer extends Model
{
use HasFactory;
/**
* The primary key associated with the table.
*
* @var string
*/
protected $primaryKey = 'customer_id';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'first_name',
'last_name',
'address',
'phone',
'email',
'registration_date',
];
public function vehicles(): HasMany
{
return $this->hasMany(Vehicle::class, 'customer_id');
}
}
Эта ошибка связана с попыткой добавить внешний ключ в таблицу транспортных средств для клиента с идентификатором 11, которого явно не существует, поскольку для него создано только 10 клиентов. 15 автомобилей. Я попытался «заставить» ошибку исчезнуть, пройдя по всем созданным автомобилям и назначив их существующим клиентам, но это привело к еще одной ошибке. Я думаю, что здесь, скорее всего, что-то не так, и исправить это будет гораздо проще, чем пытаться решить проблему способом, для которого фреймворк не предназначен. Если кто-нибудь знает, что может быть не так, буду признателен за помощь.
P.S. Я использую Laravel 11
Я работаю над проектом Laravel, и у меня есть следующие миграции: [code]public function up(): void { Schema::create('customers', function (Blueprint $table) { $table->id('customer_id'); $table->string('first_name', 50); $table->string('last_name', 50); $table->string('address', 100)->nullable(); $table->string('phone', 15)->nullable(); $table->string('email', 50)->unique(); $table->timestamp('registration_date')->default(DB::raw('CURRENT_TIMESTAMP')); $table->timestamps(); }); }
/** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('customers'); } [/code] [code]public function up(): void { Schema::create('vehicles', function (Blueprint $table) { $table->id('vehicle_id'); $table->foreignId('customer_id')->constrained('customers')->onDelete('cascade'); $table->string('make', 50); $table->string('model', 50); $table->year('year'); $table->string('license_plate', 15)->unique(); $table->string('vin', 17)->unique(); $table->string('color', 20)->nullable(); $table->timestamp('registration_date')->default(DB::raw('CURRENT_TIMESTAMP')); $table->timestamps(); }); }
/** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('vehicles'); } [/code] Как видно из таблицы транспортных средств, существует внешний ключ, ссылающийся на таблицу клиентов. Я покажу вам взаимосвязь в моделях: [code]class Vehicle extends Model { use HasFactory;
/** * The primary key associated with the table. * * @var string */ protected $primaryKey = 'vehicle_id';
/** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'customer_id', 'make', 'model', 'year', 'license_plate', 'vin', 'color', 'registration_date', ];
public function customer(): BelongsTo { return $this->belongsTo(Customer::class, 'customer_id'); } } [/code] [code]class Customer extends Model { use HasFactory;
/** * The primary key associated with the table. * * @var string */ protected $primaryKey = 'customer_id';
/** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'first_name', 'last_name', 'address', 'phone', 'email', 'registration_date', ];
public function vehicles(): HasMany { return $this->hasMany(Vehicle::class, 'customer_id'); } } [/code] И, наконец, фабрики: [code]class CustomerFactory extends Factory { protected $model = Customer::class;
class VehicleFactory extends Factory { protected $model = Vehicle::class;
/** * Define the model's default state. * * @return array */ public function definition(): array { return [ 'customer_id' => Customer::factory(), 'make' => fake()->company, 'model' => fake()->word, 'year' => fake()->year, 'license_plate' => strtoupper(fake()->unique()->bothify('???-####')), 'vin' => strtoupper(fake()->unique()->bothify('?????????????????')), 'color' => fake()->safeColorName, 'registration_date' => fake()->date(), ]; } } [/code] По-видимому, возникает следующая ошибка: [code]SQLSTATE[HY000]: General error: 1 foreign key mismatch - "vehicles" referencing "customers" (Connection: sqlite, SQL: insert into "vehicles" ("customer_id", "make", "model", "year", "license_plate", "vin", "color", "registration_date", "updated_at", "created_at") values (11, Wilderman Group, nostrum, 1970, VRF-4423, FVKRDKQWQHGDVFWBP, purple, 2019-01-16, 2024-11-13 18:30:33, 2024-11-13 18:30:33)) [/code] Эта ошибка связана с попыткой добавить внешний ключ в таблицу транспортных средств для клиента с идентификатором 11, которого явно не существует, поскольку для него создано только 10 клиентов. 15 автомобилей. Я попытался «заставить» ошибку исчезнуть, пройдя по всем созданным автомобилям и назначив их существующим клиентам, но это привело к еще одной ошибке. Я думаю, что здесь, скорее всего, что-то не так, и исправить это будет гораздо проще, чем пытаться решить проблему способом, для которого фреймворк не предназначен. Если кто-нибудь знает, что может быть не так, буду признателен за помощь. P.S. Я использую Laravel 11
Я работаю над проектом Laravel, и у меня есть следующие миграции:
public function up(): void
{
Schema::create('customers', function (Blueprint $table) {
$table->id('customer_id');
$table->string('first_name', 50);
$table->string('last_name', 50);...
Я разрабатываю приложение Java с базой данных Oracle и сталкиваюсь с ошибкой ORA-02291 при попытке вставить записи в таблицу, имеющую внешние ключи.
У меня есть следующее: таблицы:
Я пробовал использовать in_array и циклы for, но так и не смог добиться того, что пытался...
У меня есть массив (с именем $contacts), который выглядит следующим образом:
Array
(
=> 1
=> 1
=> 1
)