Проблема:
Конструктор запросов:
$r = DB::table('someTable');
$r->where(....)
$r->paginate(30, array(....))
return $r;
Теперь вызов get_class()
на $r
дает Illuminate\Database\Query\Builder
Но после открытия vendor/laravel/framework/src/Illuminate/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);
, действительно возвращает объект Illuminate\Pagination\Paginator
.
Но после этого он снова становится объектом построитель запросов.
Однако,
если я делаю непрерывную цепочку, как показано ниже
$r = DB::table('someTable')->where(...)->orderBy(....)->paginate(....)
Он возвращает объект Paginator.
В обоих приведенных выше случаях вызов toSql()
возвращает один и тот же sql, который выполняется. Таким образом, строитель строит один и тот же запрос, только возвращая разные объекты в двух вышеуказанных случаях.
Что может быть причиной этого? потому что, на мой взгляд, результирующий объект в обоих вышеупомянутых случаях должен быть одним и тем же, а именно Paginator. или я пропустил что-то основное здесь?
paginate
, и вам интересно, почему вы получаете возвращаемый объект с разбиением на страницы... - person castis   schedule 03.07.2013