この種のデータ構造の階層構造を作成するには、普遍的なメソッド/アルゴリズムを作成する必要があります。
結果を取得するクエリは次のようなものです。
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へのコールバックを知っていますか?