Привет! Давай по порядку :)
1. Так как у тебя отношения много ко многим (если это не так, будет по другому), то ты правильно сделал третью табличку. Модель для нее делать не нужно! Отношения будут выглядеть так:
Модель категории: Category.php
protected $table = 'categories';
public function posts()
{
return $this->belongsToMany('App\Models\Post', 'post_id', 'category_id);
}
Модель поста: Post.php
protected $table = 'posts';
public function categories()
{
return $this->belongsToMany('App\Models\Category', 'post_id', 'category_id);
}
2. Для того, чтобы работать с категориями поста ( и в обратном порядке):
$post = Post::where('slug', $slug)->first(); -----> равенство идет по дефолту
$categories = $post->categories;
foreach ($categories as $category)
{
echo $category->id. '<br>'; -----------------> любые данные категории.
}