我使用Slim PHP设置了我的API。这是获取所有事件的基本GET请求。我想使用Backbone Paginator对此进行分页。我的主要问题是......如何修改我的SELECT语句以接受Backbone中分页集合中的参数?似乎没有任何内容详细说明如何设置API以从分页器接收这些请求。 This post是我能来的最接近的,但没有说明你实际从数据库中请求的内容。它只是一个基本的“如果这个参数存在,把它添加到MySQL语句?”似乎应该有更好的方法。
$app->get('/events', 'getEvents');
function getEvents() {
// what do I do with the $sort variable?
$sort = $app->request()->params('sort');
$sql = "SELECT * FROM events";
try {
$db = getConnection();
$stmt = $db->query($sql);
$events = $stmt->fetchAll(PDO::FETCH_OBJ);
$db = null;
echo json_encode($events);
} catch(PDOException $e) {
echo '{"error":{"text":'. $e->getMessage() .'}}';
}
}
答案 0 :(得分:1)
我不是PHP开发人员,但您确实需要在查询中实现分页。
有关此信息,请参阅MySQL Data - Best way to implement paging?。
对于您关联的帖子,您可以按照提交者的方法来定义查询,其中包括限制:
// where $results is the number of results to return
$sql = "select * FROM events ORDER BY " . $sort . " LIMIT " . $page . " , $results";
对于存在/不存在的参数,您始终可以设置默认值。因此,如果没有请求页面,请提供第一个页面,如果没有请求排序,请按照对您的应用程序有意义的顺序进行排序。如果存在额外参数,您可以丢弃它们。
如果您需要非常严格的API,如果请求与端点规范不匹配,您始终可以返回错误