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