【发布时间】:2013-06-03 01:22:01
【问题描述】:
我目前正在使用 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 参数 since 时,我打算返回自给定日期时间以来修改过的用户。
问题是,'skip' 和 'take' 参数在没有设置 'since' 的情况下不起作用。假设数据库中有3个用户,API返回
- skip=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 个,首先跳过)吗?
【问题讨论】:
标签: model laravel laravel-4 eloquent