モバイル アプリケーション用の API を作成しています。私はこれを PHP MYSQL と Slim フレームワーク (この問題にはほとんど関係ありません) で開発しています。
mysql データベースから複数の「会場」を取得し、「会場」ごとに複数の「venue_images」を取得しようとしています。データベース:
venues venue_images
------ ------------
id PK image_venue_id FK (to venues)
venue_name image_path
active
次に、この形式でデータを出力する必要があります。
{
"completed_in":0.01068,
"returned":10,
"results":[
{
"venue_id":"1",
"venue_name":"NameHere",
"images": [
{
"image_path":"http://www.pathhere.com"
},
{
"image_path":"http://www.pathhere2.com"
}
]
}
]
}
基本的に、画像は会場ごとに複数回繰り返されます。
私の現在のコードは次のとおりです。
$sql = "
SELECT
venues.id, venues.venue_name, venues.active,
venue_images.image_venue_id, venue_images.image_path
FROM
venues
LEFT JOIN
venue_images ON venue_images.image_venue_id = venues.id
WHERE
venues.active = 1
LIMIT 0, 10
";
$data = ORM::for_table('venues')->raw_query($sql, array())->find_many();
if($data) {
foreach ($data as $post) {
$results[] = array (
'venue_id' => $post->id,
'venue_name' => $post->venue_name,
'images' => $post->image_path
);
}
//Build full json
$time = round((microTimer() - START_TIME), 5);
$result = array(
'completed_in' => $time,
'returned' => count($results),
'results' => $results
);
//Print JSON
echo indent(stripslashes(json_encode($result)));
} else {
echo "Nothing found";
}
私の現在のコードは機能しますが、これを生成します:
{
"completed_in":0.01068,
"returned":10,
"results":[
{
"venue_id":"1",
"venue_name":"The Bunker",
"images":"https://s3.amazonaws.com/barholla/venues/1352383950-qPXNShGR6ikoafj_n.jpg"
},
{
"venue_id":"1",
"venue_name":"The Bunker",
"images":"https://s3.amazonaws.com/barholla/venues/1352384236-RUfkGAWsCfAVdPm_n.jpg"
}
]
}
「The Bunker」の画像は 2 つあります。会場配列内に画像を格納する代わりに、2 番目の画像を使用して "The Bunker" の複製行を作成しています。前に述べたように、各会場内で複数の画像を繰り返す必要があります。どんな助けでも大歓迎です!ありがとう!