我目前正在使用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返回
第一种情况下不应该返回2个用户(表中3个,先跳过)?
答案 0 :(得分:3)
使用new User
时您正在创建新模型。试试User::newQuery()
。它应返回用户模型的查询构建器。