Добавление модели к отношению
К примеру, если нужно добавить новый комментарий к публикации, то вместо ручного добавления атрибута post_id (к комментарию) можно вставить комментарий, используя метод save:<?php
$comment = new App\Comment(['message' => 'Тише, мыши, кот на крыше!']);
$post = App\Post::find(1);
$post->comments()->save($comment);
?>
В этом примере использовался метод "comments", чтобы получить экземпляр отношения. И метод "save" автоматически добавляет нужное значение post_id в новую модель "Comment".Если нужно сохранить несколько связанных моделей, то можно использовать метод "saveMany", в атрибут которого можно передавать сразу несколько экземпляров "Comment", объединённые в массиве:
<?php
$post = App\Post::find(1);
$post->comments()->saveMany([
new App\Comment(['message' => 'Тише, мыши, кот на крыше!']),
new App\Comment(['message' => 'А котята ещё выше.']),
]);
?>
Обратите внимание, что при работе с отношениями "многие ко многим" необходимо использовать второй параметр метода "save", в который передаётся массив атрибутов дополнительных промежуточных таблиц:
<?php
App\User::find(1)->roles()->save($role, ['expires' => $expires]);
?>
Сохранение модели в базу данных
Метод "create" создаёт модель и вставляет её в базу данных. При этом принимая простой php массив в качестве параметра, а не экземпляр Eloquent (как в случае с методом "save"):<?php
$post = App\Post::find(1);
$comment = $post->comments()->create([
'message' => 'Тише, мыши, кот на крыше!',
]);
?>