Php 如何修改此MySQL查询以获得特定的数据结构?

Php 如何修改此MySQL查询以获得特定的数据结构?,php,mysql,Php,Mysql,如果我有两个简单的表格: 照片: photoid | filename | albumid 1 | something.jpg | 1 2 | somethingelse.jpg | 1 和相册表: albumid | album_name | owner_id 1 | My Holiday 2012 | 1 2 | My Holiday 2013

如果我有两个简单的表格:

照片:

photoid | filename            | albumid
1       | something.jpg       |    1
2       | somethingelse.jpg   |    1
和相册表:

  albumid   | album_name        | owner_id
    1       | My Holiday 2012   |    1
    2       | My Holiday 2013   |    6
我想获取给定
所有者id

我可以做到以下几点:

select albums.*, photos.*
from photo_albums as albums
left join photos as photos
on albums.albumid = photos.albumid
where albums.owner_id = :owner_id
这将为每张照片以及相关的相册数据返回2行

然而,我想做的是返回每个专辑的行。照片行嵌套在每个相册行中

返回类似以下内容的输出:

[{
    albumid : 1,
    album_name : My Holiday 2012,
    owner_id : 1,
    photos : {
                 photoid : 1,
                 filename : something.jpg
             },
             {
                 photoid : 2,
                 filename : somethingelse.jpg
             }   
}]
在MySQL查询本身中是否有一种简单有效的方法来实现这一点?如果是,怎么做?或者,我最好从原始查询中获取完整的行数据,并通过循环php中的行将数据构建到此输出中


提前感谢

修改SQL查询是做不到的

我认为有两种方法可以实现你的目标:

  • 对输出进行后处理以构建所需的数组结构
  • 使用(对象关系映射)将查询结果自动映射到对象。例如,请参见

  • 好的这才是我真正需要确定的。谢谢@barbashov,我会在有能力的时候给你答案。:)