Вопрос касается Eloquent ORM в Laravel 5.2. Допустим есть 3 таблицы (структура во вложенной картинке):
- authors
- books
- pages
Для них есть 3 модельки Author, Book, Page. Связи в классах моделей условно я настроил так:
Author -> hasMany(Book:class)
Book -> hasMany(Page::class)
Book -> belongsTo(Author:class)
Page -> belongsTo(Book:class)
Связи настроены правильно, выборка из БД работает как надо.
В Doctrine ORM или Phalcon ORM есть каскадное сохранение связей. Условно это выглядит вот так:
$firstPage = new Page();
$secondPage = new Page();
$book = new Book();
$book->setPages([$firstPage, $secondPage]);
$author = new Author();
$author->setBooks([$book]);
if ($author->save()) {
echo 'ok';
} else {
echo 'error';
}
После этого в трех таблицах создадутся записи с нужными связями. Причем это все сохранится в транзакции БД. Т.е. сохранятся все или никто.
В модельках laravel есть метод push, но то не то. Он сохраняет это не в транзакции и не сохраняет связей.
Как такое сделать в laravel?