2016-11-28 42 views
1

我道歉,如果有一个很好的答案在那里为这个已经,我还没有找到它......MySQL的JSON安装

我已经创建了一个端点URL,这是获得JSON作为返回$来自MySQL Select查询。我想让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 

好......所以我使用的查询是:

​​

这提供了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”表加入到“练习”表中,以实现我正在寻找的内容...但是当我这样做时,它会为每个标记提供一个新的JSON {},因此我将“列出”例如三次。或者,如果我说“GROUP BY exercises_id”,那么我只能得到一个标签。

任何想法?

编辑:不知道它是否有所作为...但我通过在Laravel中创建的路径创建这些端点。然后我在Ionic中使用$ http,我使用GET来请求这个JSON,然后在我的应用程序中使用它。

回答

1

总之,以后你

​​

,并有在阵列上你输出前一个数组...的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

+0

您的链接似乎是一个很好的资源,我没有找到...我正在检查出现在。谢谢...我会让你知道的。 –

0

下面的代码将会给你确切出你需要什么。它只会以json的格式显示。您可以尝试使用数组,然后用户json_encodePHP函数将其转换为json

$ex=$obj->select("*","exercises","1"); AND $obj->select("*","exercises_tags","exercise_id='$id'");mysql查询。

$ex=$obj->select("*","exercises","1"); 

$json.="["; 
for($i = 0; $i < count($ex) ; $i++){ 

    $id=$ex[$i]["id"]; 
    $json.='{ 
    "id":'.$ex[$i]["id"].',  
    "exercisename":"'.$ex[$i]["name"].'", 
    "tag":[{ 
    '; 

    $ex_ids=$obj->select("*","exercises_tags","exercise_id='$id'"); 
    for($j = 0; $j < count($ex_ids) ; $j++){ 
     $json.='"tag":"'.$ex_ids[$j]["tag"].","; 
    } 
    $json.="}]"; 
    $json.="},"; 


} 

echo $json;