如果已经有好的答案,我深表歉意,我还没有找到...
我已经创建了一个端点 URL,它正在获取 JSON 作为从 MySQL Select 查询返回的 $result。我想让 JSON 从这个查询中获得子层,并且想知道是否有人有建议。让我用简短的例子更好地解释。
我有一个练习表:
id | name
1 | squats
2 | bench press
3 | deadlift
我还有一个 exercises_tags 表:
id | exercise_id | tag
1 | 1 | legs
2 | 1 | glute
3 | 1 | quadriceps
4 | 2 | upper body
5 | 2 | chest
6 | 3 | legs
好的...所以我使用的查询是:
"SELECT * FROM exercises"
这提供了一个 JSON:
[{
"id": 1,
"exercisename": "Squats"
},
{
"id": 2,
"exercisename": "Bench Press (DB)"
},
{
"id": 3,
"exercisename": "Deadlift"
}]
我想要的是:
[{
"id": 1,
"exercisename": "Squats",
"tags": [{
"tag": "Legs",
"tag": "Glute",
"tag": "Quadriceps"
}]
},
{
"id": 2,
"exercisename": "Bench Press (DB)",
"tags": [{
"tag": "Upper Body",
"tag": "Chest"
}]
},
{
"id": 3,
"exercisename": "Deadlift",
"tags": [{
"tag": "Legs"
}]
}]
我知道这格式不太正确,但就是这个想法。我试图将“exercises_tags”表加入“exercises”表以实现我正在寻找的东西......但是当我这样做时,它为每个标签提供了一个新的 JSON {},所以我会列出“squats”例如三遍。或者如果我说“GROUP BY exercises_id”,那么我只会得到一个标签。
有什么想法吗?
编辑:不确定它是否有所作为......但我正在通过在 Laravel 中创建的路由创建这些端点。然后我在 Ionic 中使用 $http,我在其中使用 GET 请求此 JSON,然后在我的应用程序中使用它。
最佳答案
简而言之,在你之后
"SELECT * FROM exercises"
并有一个数组...在输出 json 之前,遍历数组并
"SELECT * FROM exercises_tags where exercise_id = ".$exercise['id'];
当你这样做时,将返回的“标签”添加到练习行。
有关此技术或替代技术的更多信息,have a look at the best way to create nested array from mulitiple queries and loops
关于php - MySQL JSON 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40836588/