Есть у нас стандартная схема many to many
entries
id, title
categories
id, title
entries2categories
entry_id, category_id
и вот я хочу сделать такую структуру:
[
{id : 1, title : 'entry 1', categories : [
{id : 1, title : 'category 1'},
{id : 3, title : 'category 3'}
]},
{id : 2, title : 'entry 2', categories : [
{id : 2, title : 'category 2'},
{id : 3, title : 'category 3'}
]}
]
и как же ж это сделать правильно?
1) я выбираю все нужные записи из entries, к джоиню таблицу entries2categories, а к ней джоиню categories
получаю кучу дублирующихся записей и пыхом прохожусь по ним, отсеивая дубликаты (на самом деле помещаю их в подмассив категорий)
2) я выбираю все нужные записи из entries, беру их айдишники и привожу к виду @A = "1, 2, 3". Делаю запрос из таблицы entries2categories join categories где entry_id IN (@A).
3) запросы в цикле. Проще простого, но если записей много - будет лажа. Кеширование обязательно
4) какие-то еще способы?
как правильно?