【发布时间】:2012-07-11 14:50:15
【问题描述】:
我有 2 个关系表:
table "categories"
id int(11)
title varchar(255)
table "posts"
id int(11)
title varhcar(255)
category_id int(11) // foreign key
如果我选择“类别”表,我想获得一个包含所有类别的 PHP 数组(如“SELECT * 类别”),但包括一个包含所有帖子的内部数组:
Array (
/* first category */
[0] = Array (
[id] => 1
[title] => "Rock"
/* all its posts */
[posts] => Array (
[0] = Array(
[id] = 100
[title] = "Rock post title"
[category_id] = 1
)
[1] = Array(
[id] = 101
[title] = "Other rock post title"
[category_id] = 1
)
)
/* second category */
[1] = Array (
)
/* ... */
)
如果我只是进行“加入”查询,我会将所有结果组合在一起,例如:
id title id title category_id
1 Rock 100 "Rock post title" 1
2 Rock 101 "Other rock post" 1
3 Rock 102 "Final rock post" 1
我不想进行多个查询,因为我认为效率低下。
有没有办法通过一个查询来实现期望的结果?
我知道 CakePHP 设法以这种格式返回关系表结果,所以我希望获得相同的结果。
【问题讨论】:
-
连接查询很好,你只需要循环遍历结果来创建你想要的数组结构。
标签: php mysql join multidimensional-array