В документе: https://laravel.com/docs/5.3/eloquent-relationships#many-to-many говорят, что отношение имеет сводную таблицу, и в этой таблице есть столбцы со ссылкой на таблицу для создания множества отношений.
например, для файла миграции:
Schema::create('category_product', function (Blueprint $table) {
$table->increments('id');
$table->integer('category_id');
$table->integer('product_id');
});;
В модели товара:
public function extraCategories()
{
return $this->belongsToMany(Category::class);
}
В категории Модель:
public function extraProducts()
{
return $this->belongsToMany('App\Product');
}
Другие примеры на модели:
public function associacion()
{
return $this->belongsToMany('App\Product', 'product_related', 'product2_id', 'product_id');
}
В этом случае имеется определенная таблица, первый столбец и второй столбец, которые Eloquent не устанавливает автоматически с помощью сводной таблицы и другой модели.
Когда вы получаете данные, например, с тинкером, вы видите:
App\Product {#892
id: "4555",
name: "PRODUCT NAME",
extraCategories: Illuminate\Database\Eloquent\Collection {#912
all: [
App\Category {#907
id: "245",
description: "YYYYY",
pivot: Illuminate\Database\Eloquent\Relations\Pivot {#902
product_id: "4555",
category_id: "245",
},
},
App\Category {#908
id: "135",
description: "XXXXX",
pivot: Illuminate\Database\Eloquent\Relations\Pivot {#901
product_id: "4555",
category_id: "135",
},
},
],
},
}
В этом случае возвращаемое отношение extraCategories многие ко многим в массиве коллекций.
Я надеюсь, что это решило ваши проблемы.