我目前正在使用php slim框架开发restfulapi。我当前遇到以下问题:
我必须选择基数为1:n的表。通过get调用,我想获取主表的数据,并在其中嵌套所有带有外键的表。这样地:
计划结果
[{
"id":"1",
"ueberschrift":"UEBER",
"text_kurz":"Lorem ipsum...",
"kategorie":"HEAL",
"bilder":[
{"src":"wed1.png"},
{"src":"wed2.png"}
]},......
这就是mysql数据库的一部分看起来像当前数据库的方式
瘦php代码
$app->get('/rezensionen', function ($request, $response, $args) {
$sth = $this->db->prepare("SELECT
rezension.id,ueberschrift,text_kurz,kategorie, bild.src FROM rezension INNER
JOIN bild ON (rezension.id=bild.rezension_id)");
$sth->execute();
$todos = $sth->fetchAll();
return $this->response->withJson($todos);
});
我得到的是:
实际结果
[
{
"id": "1",
"ueberschrift": "UEBER",
"text_kurz": "Lorem Ipsum...",
"kategorie": "HEAL",
"src": "wed1.png"
},
{
"id": "1",
"ueberschrift": "UEBER",
"text_kurz": "Lorem Ipsum...",
"kategorie": "HEAL",
"src": "wed2.png"
}
]
希望你知道一个正确的方法来实现这一点!
谢谢!你的,大卫
1条答案
按热度按时间irlmq6kh1#
您不能使用sql返回关系结果集,因此您需要做更多的工作才能获得该输出。
如果将查询更改为
然后,您将获得每个rezension.id的一条记录以及与其相关的bild.src记录的csv。
在代码中,您将需要拆分该csv并组装一个数据对象,该对象包含来自查询的列,但bilder值是分解的csv的数组。关联数组可能是最简单的方法。
不知道斯利姆是怎么做到的,但这里有一个粗略的想法
希望这有帮助。