Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP Slim RESTful API-两表连接嵌套JSON_Php_Mysql_Json_Rest_Slim - Fatal编程技术网

PHP Slim RESTful API-两表连接嵌套JSON

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

我目前正在使用PHP Slim框架开发RESTful API。我目前遇到以下问题:

我必须使用1:n基数的表。通过一个GET调用,我想获取主表的数据,并在其中嵌套所有带有外键的表。这样地: 计划结果 [{ id:1, ueberschrift:UEBER, 文本_kurz:Lorem ipsum。。。, 凯特戈里:治愈, 船底:[ {src:wed1.png}, {src:wed2.png}
]},…您不能使用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;否则你不会得到值,因为它不是一个对象。谢谢你,先生!