Model Laravel 4-如何使用skip()/take()但不使用where子句获取模型

Model Laravel 4-如何使用skip()/take()但不使用where子句获取模型,model,laravel,laravel-4,eloquent,Model,Laravel,Laravel 4,Eloquent,我目前正在使用Laravel4开发一个API,在尝试筛选返回的用户列表时遇到了一个问题。让我困惑的是,L4文件说 注意:查询雄辩的模型时,查询生成器上可用的所有方法也可用 现在有一些代码来澄清问题: $since = Input::has('since') ? strtotime(Input::get('since')) : 0; $skip = (int)Input::get('skip'); $take = (int)Input::get('take');

我目前正在使用Laravel4开发一个API,在尝试筛选返回的用户列表时遇到了一个问题。让我困惑的是,L4文件说

注意:查询雄辩的模型时,查询生成器上可用的所有方法也可用

现在有一些代码来澄清问题:

    $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时,我都打算返回自给定日期时间以来修改过的用户

问题是,“跳过”和“获取”参数在没有“自”设置的情况下不起作用。假设数据库中有3个用户,API将返回

  • skip=1&take=10=>3个用户
  • 自=2013-06-06 11:00:00起跳过=1和接受=10=>1个用户(2个用户在>2013-06-06 11:00:00更新了_,但跳过了一个)

在第一种情况下,它是否应该返回2个用户(表中3个,第一次跳过)?

当使用
新用户时,您正在创建新模型。尝试
User::newQuery()
。它应该返回用户模型的查询生成器。

当使用新用户创建新模型时。尝试
User::newQuery()
。它应该返回用户模型的查询生成器。

谢谢您的建议。newQuery()方法确实解决了这个问题。注意:这个方法不是静态的,所以我必须在用户实例上调用它:
$User=newuser()$生成器=$user->newQuery()我不确定该方法是否是静态的。很高兴它有帮助:)从Laravel5.2开始,有一个等价的静态方法,简单地称为
query
<代码>$builder=User::query()谢谢你的建议。newQuery()方法确实解决了这个问题。注意:这个方法不是静态的,所以我必须在用户实例上调用它:
$User=newuser()$生成器=$user->newQuery()我不确定该方法是否是静态的。很高兴它有帮助:)从Laravel5.2开始,有一个等价的静态方法,简单地称为
query
<代码>$builder=User::query()