При сохранении модели в БД, фреймворк автоматически получает её id, и он становится доступным через одноимённое поле.
Как уже писали выше, делает это вот так
$myModel->save();
echo $myModel->id;
Когда вам нужно записать данные в связанные таблицы, то вам определённо нужено делать это последовательно.
Вы не можете сначала сохранить строку в связанную таблицу с вымышленным id, а потом сохранить модель в первую таблицу с этим id - проверка целостности не позволит использовать несуществующий foreign key.
Поэтому код сохранения нескольких связанных записей нужно свести к
$myModel->save();
$relatedModel = new RelatedModel();
$relatedModel->my_model_id = $myModel->id;
$relatedModel->save();
Если вдруг, как-то так получилось, что как-то невообразимым образом при сохранении первой модели нужно знать id второй модели, а при созранении второй - id первой, то у вас проблема - схема БД и логика приложения неправильные.
Если это какое-то легаси, не ваше, которое нельзя исправить и просто надо как-то доработать, ну тогда поверх одних неправильных решений придётся делать свои осознанно "неправильные" решения, например отказываться от FK на поле, делать его nullable, разбивать сохранение записи на несколько этапов - сначала все данные без id связи, потом отдельно id связи после того как она сама будет создана в БД.
Ну это так, мысли вслух про странные случаи.
И опять же, как уже писали, для правильно реализованных моделей есть функции-хелперы, упрощающие связывание моделей
$myModel->save();
$myModel->relatedModels()->attach($relatedModel);