Как сохранить модель с отношениями в массиве сразу в Laravel

Предположим, у меня есть модели Post и Category, у которых Post есть много ко многим категориям. Затем я хочу сразу сохранить следующий массив в laravel:

$newPost = [
'name' 'Some name of model',
'categories' => [
[
'name' => 'The name of the new category without id'
],
[
'id' => 1,
'name' => 'The name of the exists category'
]
]
];

когда я использую

$newPostInstance = new Post();
$newPostInstance->fill($newPost);
$newPostInstance->save();

сохраняется только свойство name сообщения без данных категорий.

Есть ли простой способ сделать это в Laravel?

1

Решение

Вы можете попробовать это при создании одного Category прикрепить с новым Post:

$category = ['name' => 'The name of the new category without id'];
$newPostInstance = new Post()->fill($data);
$newPostInstance->categories()->save($category);

Или вы можете использовать что-то вроде этого:

$category1 = new Category;
$category1->name = 'CatOne';
$category1->save();

$category2 = new Category;
$category2->name = 'CatTwo';
$category2->save();

$newPostInstance->categories()->sync(array($category1->id, $category2->id));

Проверьте больше на документация.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]