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

[OK]を...ので、私が使用しているクエリは次のとおりです。

​​

JSONの値は

です。

[{ 
    "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 {}が提供されるので、 "スクワット"例えば3回。または、私が "GROUP BY exercises_id"と言うと、うまくいけば、タグを1つだけ取得します。

アイデア?

EDIT:違いがあるのか​​どうかわかりませんが、私はLaravelで作成されたルートを通じてこれらのエンドポイントを作成しています。私はその後、私は私のアプリケーションでそれを使用しているこのJSONを要求するためにGETを使用しているIonicで$ httpを使用しています。あなたは

​​

し、出力する前に、アレイ... JSON、ループ配列を超えると

"SELECT * FROM exercises_tags where exercise_id = ".$exercise['id']; 

、あなたがそれを行うように追加した後、短い中

答えて

1

、戻ってきた「タグ」を行使してください。この技術や代替技術に関する詳細は

、コードの下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");および$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;