我目前正在使用 Laravel 4 开发 API,但在尝试过滤返回的用户列表时遇到了问题。让我感到困惑的是,L4 文档说
注意:查询构建器上可用的所有方法在查询 Eloquent 模型时也可用。
现在一些代码来澄清事情:
$since = Input::has('since') ? strtotime(Input::get('since')) : 0;
$skip = (int)Input::get('skip');
$take = (int)Input::get('take');
if ($since) {
$builder = User::where('updated_at', '>', date('Y-m-d H:i:s', $since));
}
else {
$builder = new User();
}
if ($take > 0) {
$builder->take($take);
}
if ($skip > 0 && $take > 0) {
$builder->skip($skip);
}
return count($builder->get());
如您所见,我正在尝试根据不同的标准获取模型。每当提供 URL 参数时,我打算返回自给定日期时间以来修改的用户。
问题是,“skip”和“take”参数在没有“since”设置的情况下不起作用。假设数据库中有 3 个用户,API 返回
- 跳过=1&take=10 => 3 个用户
- since=2013-06-06 11:00:00skip=1&take=10 => 1 个用户(2 个已更新_at > 2013-06-06 11:00:00,但有一个被跳过)
它不应该在第一种情况下返回 2 个用户(表中的 3 个,首先跳过)吗?