Допустим, вы знаете идентификатор поста, то вы можете прикрепить один кот, как это:
Post::find($post_id)->cats()->attach($cat_id);
Или прикрепите несколько кошек следующим образом:
$cat_ids = array(1,2,3,4);
Post::find($post_id)->cats()->attach($cat_ids);
Если вы получили сообщение модель объекта в переменной, позволяет сказать, $ пост:
$post->cats()->attach($cat_id);
// Or with multiple
$cat_ids = array(1,2,3,4);
$post->cats()->attach($cat_ids);
Если у вас есть одна категория в качестве модели объекта, позволяет сказать, что $ модель:
$post->cats()->save($model);
Остерегайтесь @Gadoma's answer. Это не так, но если вы хотите добавить категории в сообщение, у которого уже есть категории, вы должны использовать attach() вместо sync(). Sync() удалит все остальные, которые не были предоставлены ему при использовании.
редактировать:
Так что, если вы создаете новое сообщение, то вы, вероятно, делаете что-то вроде этого:
$post = new Post;
$post->title = 'The title';
$post->something_else = 'Lorem';
$post->save();
//So now you have both the model object (the $post variable) and the id ($post->id).
$post->cats()->attach($cat_ids);
Вашей сводная таблицы следует назвать: post_cat (сингулярный против множественного числа). Вы можете использовать альтернативное имя таблицы сводной таблицы, но тогда вам нужно указать имя этой таблицы в качестве второго аргумента методу ownToMany(). – Ilyes512