0

我目前正在使用 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 个,首先跳过)吗?

4

1 回答 1

3

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

于 2013-06-06T22:36:02.833 回答