2

我需要创建一个通用的方法/算法来为这种数据结构创建一个层次结构:

数据库结构

获取结果的查询是这样的:

SELECT 
  * 
FROM 
  `Posts` 
JOIN 
   `Comments` AS `Comments` 
ON 
   `Posts`.`post_id` = `Categories`.`category_id` 
JOIN 
   `Likes` AS `Likes` 
ON 
   `Comments`.`comment_id` = `Likes`.`comment_id`

我期望的是这样的:

Array
(
    [0] => Array
    (
        [post_id] => 1
        [post_message] => Test
        [Comments] => Array
        (
            [0] => Array
            (
                [comment_id] => 1
                [post_id] => 1
                [comment_message] => Foo
                [Likes] => Array
                (
                    [0] => Array
                    (
                        [like_id] => 1
                        [comment_id] => 1
                    )
                    [1] => Array
                    (
                        [like_id] => 2
                        [comment_id] => 1
                    )
                )
            )
            [1] => Array
            (
                [comment_id] => 2
                [post_id] => 1
                [comment_message] => Bar
                [Likes] => Array
                (
                    [0] => Array
                    (
                        [like_id] => 3
                        [comment_id] => 2
                    )
                )
            )
        )
    )
)

所以我的问题是: 有没有使用 PDO 的简单方法?我可以手动遍历数组,从 information_schema 中获取键,然后创建子数组,还有更多子数组……,但这感觉就像再次手动编写连接。

我注意到,调用 PdoStatements fetchAll() 时可以使用一个常量:

$statement->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP);

这将在某种程度上对数据进行分组,但不是我想要的方式。

那么这个(或类似的东西)是否有一个常量,或者你知道任何聪明的 fetchAll 回调,可以做到这一点?

4

0 回答 0