Связь многие ко многим
Пусть каждый пост может принадлежать нескольким категориям. В этом случае они будут связаны через промежуточную таблицу связи. Давайте посмотрим на структуру таблиц.
Таблица с постами:
posts
id
title
Таблица с категориями:
category
id
name
Таблица связи:
category_post
id
post_id
category_id
Первая связь
Каждый пост принадлежит многим категориям. Давайте пропишем эту связь через отношение belongsToMany
:
app/Models/Post.php<?php
class Post extends Model
{
public function categories()
{
return $this->belongsToMany(Category::class);
}
}
Получим пост вместе с его категориями:
app/Http/Controllers/PostController.php<?php
class PostController extends Controller
{
public function show()
{
$post = Post::find(1);
dump($post->categories);
}
}
Вторая связь
Каждая категория принадлежит многим постам. Давайте пропишем эту связь через отношение belongsToMany
:
app/Models/Category.php<?php
class Category extends Model
{
public function posts()
{
return $this->belongsToMany(Post::class);
}
}
Получим категорию вместе с ее постами:
app/Http/Controllers/CategoryController.php<?php
class CategoryController extends Controller
{
public function show()
{
$category = Category::find(1);
dump($category->posts);
}
}