У меня есть следующий простой код, который выполняет итерацию по некоторым данным, создает Bedroom
, а затем присоединяет Beds
к каждому Bedroom
.
foreach ($data as $room) {
$r = new Bedroom();
$r->name = $room['name'];
$r->save();
foreach ($room['beds'] as $bed) {
$b = new Bed();
$b->name = $bed['name'];
$b->bedroom_id = $r->id; // (A)
$b->save(); // (B)
}
}
Я получаю ошибку ограничения внешнего ключа в (B), потому что номер комнаты в (A) не существует. Мне это кажется невозможным, если после $r->save()
не происходит какая-то задержка или $r->id
не соответствует базе данных. Похоже, это можно исправить, заменив (B) на $r->beds()->save($b);
. Почему?