paginator call on query builder не возвращает объект paginator в laravel 4 (в конкретном случае)

Проблема:

Конструктор запросов:

$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 . или я пропустил что-то основное здесь?