Php 查询生成器上的paginator调用在laravel 4中不返回paginator对象(在特定情况下) 问题:

Php 查询生成器上的paginator调用在laravel 4中不返回paginator对象(在特定情况下) 问题:,php,laravel,laravel-4,query-builder,Php,Laravel,Laravel 4,Query Builder,查询生成器: $r = DB::table('someTable'); $r->where(....) $r->paginate(30, array(....)) return $r; 现在,在$r上调用get\u class()将提供illumb\Database\Query\Builder 但是在打开vendor/laravel/framework/src/illumb/Database/Query/builder.php之后,我看到了这一点 public function p

查询生成器:

$r = DB::table('someTable');
$r->where(....)
$r->paginate(30, array(....))
return $r;
现在,在
$r
上调用
get\u class()
将提供
illumb\Database\Query\Builder

但是在打开
vendor/laravel/framework/src/illumb/Database/Query/builder.php
之后,我看到了这一点

public function paginate($perPage = 15, $columns = array('*'))
{
    $paginator = $this->connection->getPaginator();


    if (isset($this->groups))
    {
        return $this->groupedPaginate($paginator, $perPage, $columns);
    }
    else
    {            
        return $this->ungroupedPaginate($paginator, $perPage, $columns);
    }
}
上面的行,
return$this->ungroupedPaginate($paginator,$perPage,$columns)
确实返回一个
照亮\Pagination\Paginator
对象

但在此之后,它再次成为查询生成器对象

然而, 如果我做一个连续的链,如下所示

$r = DB::table('someTable')->where(...)->orderBy(....)->paginate(....)
它返回一个分页器对象

在上述两种情况下,调用
toSql()
返回与正在运行的sql相同的sql。因此,在上述两种情况下,生成器只返回不同的对象来构造相同的查询


这可能是什么原因?因为在我看来,上述两种情况下的结果对象应该是相同的,即Paginator。或者我缺少一些基本信息?

您需要将返回值重新分配给
$r
变量

$r = DB::table('someTable');
$r = $r->where(....)
$r = $r->paginate(30, array(....))
return $r;

我希望您意识到,您调用的最后一个方法是
paginate
,您想知道为什么要返回paginate对象…@castis no。我没有返回Paginator对象,因此产生了这个问题。