Связь многие ко многим в Laravel


Пусть каждый пост может принадлежать нескольким категориям. В этом случае они будут связаны через промежуточную таблицу связи.

Давайте посмотрим на структуру таблиц. Таблица с постами:

posts
id
Таблица с категориями:

category
id
Таблица связи:

category_post
id
post_id
Первая связь
Каждый пост принадлежит многим категориям. Давайте пропишем эту связь через отношение belongsToMany:

<?php
class Post extends Model
{
public function categories()
{
return $this->belongsToMany(Category::class);
}
}
?>
Получим пост вместе с его категориями:

<?php
class PostController extends Controller
{
public function show()
{
$post = Post::find(1);
dump($post->categories);
}
}
?>
Вторая связь
Каждая категория принадлежит многим постам. Давайте пропишем эту связь через отношение belongsToMany:

<?php
class Category extends Model
{
public function posts()
{
return $this->belongsToMany(Post::class);
}
}
?>
Получим категорию вместе с ее постами:

<?php
class CategoryController extends Controller
{
public function show()
{
$category = Category::find(1);
dump($category->posts);
}
}
?>