У меня есть три таблицы: страницы, верхние и нижние колонтитулы. У меня есть отношения, настроенные так, чтобы Page hasOne('App\Footer')
и hasOne('App\Header')
. Верхний и нижний колонтитулы каждый belongTo('App\Page')
. Таблица страниц имеет header_id
и footer_id
. Остальные имеют page_id
. Когда я получаю Page
, верхний и нижний колонтитулы также извлекаются ЕСЛИ (и только если), все идентификаторы соответствуют друг другу.
В моем контроллере нет проблем с сохранением Page
, включая верхний и нижний колонтитулы. Но поскольку у меня настроены отношения, все идентификаторы должны быть правильно сохранены, но в таблице нижних и верхних колонтитулов сохраняется только page_id
- идентификаторы нижних и верхних колонтитулов не сохраняются в таблице страниц. Вот что у меня есть:
public function putAddpage(Request $request)
{
$header = new Header(['text' => $request->input('header-text')]);
$footer = new Footer(['text' => $request->input('footer-text')]);
$page = new Page();
$page->title = $request->input('page-title');
$page->some_text = $request->input('some_text');
$page->save();
$page->header()->save($header);
$page->footer()->save($footer);
return $page;
}
Пример данных БД:
страницы: {id: 12, footer_id: 0, header_id: 0, заголовок: «Заголовок страницы», some_text: «бла-бла-бла»}
нижние колонтитулы: {id: 2, page_id: 12, текст: "More blah blah blah"}
заголовки: {id: 4, page_id: 12, текст: «Здесь нечего видеть»}
Как мне получить, чтобы footer_id
и header_id
также сохранили правильные идентификаторы?
Спасибо.