Пример:
https://gist.github.com/AlexeyRudkovskiy/9fb4fcfd3...
В начале каждого файла в комментарии указан путь где он находится.
Далее пишете так:
$product = App\Product::find(1); // Поулчаем запись с id = 1
foreach ($product->categories as $category) {
// Делаете что хотите с категориями этого товара
}
Тоже самое можно сделать и с категориями:
$category = App\Category::find(1); // Поулчаем запись с id = 1
foreach ($category->products as $product) {
// Продукты в категории
}
Добавляем запись в категорию:
$product = ...;
$category = App\Category::find(1); // Для примера будем использовать категорию с id = 1
$category->products()->attach($product->id);
Или добавляем несколько записей за раз:
$category = App\Category::find(1); // Для примера будем использовать категорию с id = 1
$category->products()->attach([1, 2, 3]); // Добавляем товары с id = 1, 2, 3 в категорию с id = 1
Удаляем продукты из категории:
$category = App\Category::find(1); // Для примера будем использовать категорию с id = 1
$category->products()->detach(1); // Удаляем продукт с id = 1 из категории с id = 1. Так же можно передать массив для удаления сразу нескольких продуктов из категории
Всё описанное выше работает в обе стороны, т.е. можно таким же образом продукту добавлять и удалять категории(аналогично каждому из примеру, см. первый и второй пример)