PHP Slim RESTful API-两表连接嵌套JSON
我目前正在使用PHP Slim框架开发RESTful API。我目前遇到以下问题: 我必须使用1:n基数的表。通过一个GET调用,我想获取主表的数据,并在其中嵌套所有带有外键的表。这样地: 计划结果 [{ id:1, ueberschrift:UEBER, 文本_kurz:Lorem ipsum。。。, 凯特戈里:治愈, 船底:[ {src:wed1.png}, {src:wed2.png}PHP Slim RESTful API-两表连接嵌套JSON,php,mysql,json,rest,slim,Php,Mysql,Json,Rest,Slim,我目前正在使用PHP Slim框架开发RESTful API。我目前遇到以下问题: 我必须使用1:n基数的表。通过一个GET调用,我想获取主表的数据,并在其中嵌套所有带有外键的表。这样地: 计划结果 [{ id:1, ueberschrift:UEBER, 文本_kurz:Lorem ipsum。。。, 凯特戈里:治愈, 船底:[ {src:wed1.png}, {src:wed2.png} ]},…您不能使用SQL返回关系结果集,因此您需要做更多的工作才能获得该输出 如果将查询更改为 SELE
]},…您不能使用SQL返回关系结果集,因此您需要做更多的工作才能获得该输出 如果将查询更改为
SELECT
rezension.id
,ueberschrift
,text_kurz
,kategorie
,GROUP_CONCAT(bild.src) AS bilderCSV
FROM
rezension
INNER JOIN bild
ON rezension.id = bild.rezension_id
GROUP BY
rezension.id
然后,您将获得每个rezension.id的一条记录以及与之相关的bild.src记录的CSV
在代码中,您需要拆分该CSV并组装一个数据对象,其中包含查询中的列,但bilder值是分解的CSV的数组。关联数组可能是最简单的方法
不确定斯利姆是如何做到这一点的,但这里有一个粗略的想法
foreach($todos as $todo) {
$output['id'] = $todo->id;
$output['ueberschrift'] = $todo->ueberschrift;
$output['text_kurz'] = $todo->text_kurz;
$output['kategorie'] = $todo->kategorie;
$srcs = explode(",", $todo->bilderCSV);
foreach($srcs as $src) {
$output['bilder'][]['src'] = $src
}
$outputs[] = $output
}
return $this->response->withJson($outputs);
希望这有帮助。工作得很好!-但是如果你这样做的话,你必须将Fetch行更改为:$todos=$sth->fetchAllPDO::Fetch_OBJ;否则你不会得到值,因为它不是一个对象。谢谢你,先生!