在PHP中从数据库创建嵌套数组
我的数据库中有一些表,它们之间有不同的关系。现在,我想在PHP中从这些数组创建嵌套数组,以便我的数组结构如下所示:在PHP中从数据库创建嵌套数组,php,mysql,arrays,Php,Mysql,Arrays,我的数据库中有一些表,它们之间有不同的关系。现在,我想在PHP中从这些数组创建嵌套数组,以便我的数组结构如下所示: - Parent - id: 1 - name: "ParentName1" - children: - child - cid: 1 - name: "ChildName1" - movies: - Movie - mid: 1
- Parent
- id: 1
- name: "ParentName1"
- children:
- child
- cid: 1
- name: "ChildName1"
- movies:
- Movie
- mid: 1
- name: "MovieName1"
- Movie
- mid: 2
- name: "MovieName2"
- child
- cid: 2
- name: "ChildName2"
- movies:
- Movie
- mid: 3
- name: "MovieName3"
- Movie
- mid: 1
- name: "MovieName1"
- Parent
- id: 2
- name: "ParentName2"
- children:
- child
- cid: 4
- name: "ChildName4"
- movies:
- Movie
- mid: 6
- name: "MovieName6"
- Movie
- mid: 7
- name: "MovieName7"
- child
- cid: 1
- name: "ChildName1"
- movies:
- Movie
- mid: 1
- name: "MovieName1"
- Movie
- mid: 2
- name: "MovieName2"
我创建了一个查询,它将所有子ID、名称和电影连接到一行中,并用“,”分隔。这适用于ID和名称,但在电影中会变得棘手
SELECT
parents.id AS parentId,
parents.name AS parentName,
GROUP_CONCAT(children.id) AS childrenIds,
GROUP_CONCAT(children.name) AS childrenNames,
GROUP_CONCAT(children.movies) AS childrenMovies
FROM
parents
LEFT JOIN relationTable ON
relationTable.pid = parent.id
LEFT JOIN children ON
children.id = relationTable.child.id
LEFT JOIN moviesRelatonTable ON
moviesRelatonTable.personId = children.id
GROUP BY
parents.id
我想我只能查询父母,然后在PHP循环中查询每一个孩子。但我觉得这对表演来说不是很好
有没有更好的方法可以查询这个问题,或者我应该使用PHP中的循环?如果您总是从数据库中提取完整的列表,您可以在处理一次后将json保存为文件。在每个请求中,检查数据库中的文件save date和last updatedate,如果json文件是最新的,甚至不用麻烦将其全部从数据库中取出,只需使用该文件即可。如果文件不是最新的,请从数据库中创建并再次保存。这将有助于解决性能问题,这样您就不必太担心子查询的性能。您需要使用函数
file\u exists
和filemtime
,这是一种树形结构,因此XML可能更有意义。甚至Json。是的,它将被转换为Json。但我需要以某种方式从数据库获取数据。这并不能回答我关于如何从数据库创建嵌套数组的问题。不能直接从数据库创建嵌套数组。数据库只能像Excel文件一样输出行数据。您必须按照建议进行嵌套查询。这只是告诉您如何避免对每个请求进行嵌套查询。