Связь многие ко многим в 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);
}
}
?>