Laravel метод save () модели не возвращает правильный идентификатор? - PullRequest
0 голосов
/ 14 июля 2020

У меня есть следующий простой код, который выполняет итерацию по некоторым данным, создает 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);. Почему?

...