Всем привет. Подскажите как правильно построить запрос. Я использую laravel query builder.
Есть 3 таблицы:
- posts - таблица постов. Поля: id, title, content.
- tags - таблица тегов. Поля: id, name.
- post_tag - связующая таблица. Поля: id, post_id, tag_id.
Отношения многие ко многим, posts принадлежат к tags.
Вот так выглядит таблица на сайте:
Задача такая, необходимо получить все posts и в подзапросе получить связанные с ними tags (поля name через запятую).
В результате должен получится массив из постов и у каждого поста должен быть ключ, например, tags_names со значением равным строке из имен тегов, к которым относится этот пост с разделителем через запятую.
Вот тот код, над которым я ломаю голову:
$tagSub = DB::table('tags')
->selectRaw('group_concat(name) as tags_names');
$posts = Post::where('status', 1)
->with('tags')
->leftJoinSub($tagSub, 'tag_sub', function ($q) {
$q->on('posts.id', '=', 'tags.id');
})
->select('posts.*',
'tag_sub.name as post_tags_names')
->paginate();
Я не могу понять как использовать в этом запросе связующую табличку...