如果我有一个这样的数据库,有 3 个表:
Table: BlogEntries
BlogEntries.id (pk)
BlogEntries.blogText
Table: Tags
Tags.id (pk)
Tags.TagName
Table: TagsForBlogEntries
TagsForBlogEntries.id (pk)
TagsForBlogEntries.tag_id
TagsForBlogEntries.entry_id
如果我想获取博客条目列表并获取这样的数据(表示为数组):
array (
[0] => array(
[id] => '1',
[blogText] => 'example text',
[tags] => array(
array([id]=>1, [TagName] => 'A Test Tag 1'),
array([id]=>2, [TagName] => 'A Test Tag 2'),
)
),
(即所有标签)。最好的方法是如何做到这一点?
我目前会这样做(伪代码) - 基本上“手动”运行子查询(不是来自原始 sql 查询):
select * from BlogEntries;
$rows =array();
foreach($blogEntries as $row) {
$row['tags'] = mysql_fetch_array( mysql_query("select * from Tags left join TagsForBlogEntries on TagsForBlogEntries.tag_id = tags.id where entry_id = " . $row['id'] ) ) ;
$rows[] = $row;
}