2016-11-28 59 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;