Я изучаю разработку Api, где я хочу получать данные из двух таблиц
Первая таблица (элементы) содержит:
id, feed_id, title, author, content
Вторая таблица (каналы):
feed_id,title,url
Я хочу получить ответ Json вроде:
{
- stories :
[
id
feed_id {
title,
url
}
title
author
]
}
Моя функция PHP для извлечения истории, предвзятой по id, выглядит так:
$app->get('/stories/:id', 'authenticate', function($story_id) {
$response = array();
$result = Database::get('db')->table('items')
->eq('rowid', $story_id)
->findOne();
//$response["error"] = false;
if ($result != NULL) {
$response['stories'] = array(
'id' => $result["id"],
'feed_id' => $result["feed_id"],
'title' => $result["title"],
'isBreaking' => $result['isBreaking'],
'author' => $result['author'],
'updated' => $result["updated"],
'url' => $result['url'],
'content' => $result["content"]);
echoRespnse(200, $response);
}
else {
$response["error"] = true;
$response["message"] = "The requested resource doesn't exists";
echoRespnse(404, $response);
}
});
В результате я получаю следующее:
{
- "stories": [
{
id
feed_id
title
url
}
]
}
Как я могу получить данные со второго планшета (каналы), смещенного на feed_id, и получить данные в подвале?
как @MikeBrant упомянул, что вам нужно использовать join
между двумя таблицами для получения правильных данных. простой запрос будет примерно таким:
select items.id, items.title, items.author, items.content, feeds., feeds.title as feed_title, feeds.url from items left join feeds on items.feed_id = feeds.feed_id
а затем измените свой $response['stories']
следующим образом:
$response['stories'] = array(
'id' => $result["id"],
'feed_id' => array(
'title' => $result["feed_title"],
'url' => $result["url"]
),
'title' => $result["title"],
.
.
.
);
вы получаете идею :)