Есть таблица постов posts (id, name), есть таблица тэгов tags (id, name).
Связаны они между собой с помощью связи "многие ко многим", через вспомогательную таблицу post_tag (id_post и id_tag).
Необходимо, зная id тэга, выбрать все связные посты.
Как правильно реализовать такую выборку помощью конструктора запросов laravel?
Закиньте в модель Tag связь
public function posts() {
return $this->belongsToMany(Post::class, 'post_tag ', 'id_post', 'id');
}
А в модель Post связь
public function tags() {
return $this->belongsToMany(Tag::class, 'post_tag', 'id_tag', 'id');
}
Запросы для проверки:
$tags = Tag::with('posts')->get();
$posts = Post::with('tags')->get();
dump($tags);
dump($posts);
die;
Наверное как то так я думаю. Через join:
DB::select('select * from tags as t
join post_tag as pt ON pt.id_tag = t.id
join posts as p ON p.id = pt.id_post
where pt.id_tag= ?', [$id]);
Тут выборка идёт по tags и к ней join'нятся другие таблицы.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники