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对象,因此产生了这个问题。