私は3つのテーブルを持っています、
Entries
、、Tags
_Entry_Tag_Link
テーブルを通過してすべてをEntries
テーブルから引き出すクエリがあります
SELECT *
FROM (`blog_entries`)
ORDER BY `date` desc
エントリの配列になってしまいます。
その後、私は次のようにループします
foreach($entries as &$entry)
$entry['tags'] => getTags($entry['id]);
getTags
関数はこのクエリを実行します
SELECT t.*
FROM blog_tags t
JOIN blog_entries_tags_link l
ON t.id = l.tag_id
WHERE l.entry_id = {whatever id was passed}
ORDER BY t.name asc;
したがって、次のような配列になります。
Array
(
[0] => Array
(
[id] => 1
[title] => First Title
[tags] => Array
(
[0] => Array
(
[id] => 1
[name] => t1
)
[1] => Array
(
[id] => 2
[name] => t2
)
)
)
[1] => Array
(
[id] => 2
[title] => Second Title
[tags] => Array
(
[0] => Array
(
[id] => 1
[name] => t1
)
[1] => Array
(
[id] => 3
[name] => t3
)
)
)
)
つまり、200のエントリがある場合、201のクエリが発生するということです。必要なすべてのデータを、1つのクエリで取得する方法があるのではないかと思います(そして、おそらくphpを使用して正しい形式にマッサージします)。 ?