Я пытаюсь выполнить 2 вставки, в таблице 2 таблицы ограничены с помощью внешнего ключа.Эти 2 операции должны выполняться внутри транзакции, чтобы предотвратить возможные сбои.
Драйвер базы данных - pgsql.
SomeRepo.php (пробовал с вариантом закрытия транзакцииа также)
DB::beginTransaction();
try {
$parentData = [
'name' => 'Parent name'
];
$parent = new Parent($parentData);
$parent->save();
$childData = [
'parent_id' => $parent->id,
'name' => 'Child name'
];
$child = new Child($childData);
$parent->children()->save($child);
DB::commit();
} catch (Exception $e) {
DB::rollback();
}
Parent.php
protected $fillable = [
'name'
];
public function children()
{
return $this->hasMany(Child::class);
}
Child.php
protected $fillable = [
'name', 'parent_id'
];
Ошибка выполненияпри попытке вставить дочернюю строку с идентификатором родительского возврата.
insert or update on table "child" violates foreign key constraint "child_parent_id_foreign"