Laravel 4 - как ограничить (взять и пропустить) для Eloquent ORM?

TL; DR

Можете ли вы ограничить Eloquent ORM запрос, как с помощьюtake() а такжеskip() так что результирующий запрос MySQL также ограничен, и он не должен возвращать весь набор данных?

Если так, как бы вы изменили:

$test = User::find(1)->games->toArray();

Включатьlimit 3 offset 2?

Таблицы:
users       games           userGames
-- id       -- id           -- user_id
-- name     -- name         -- game_id
            -- steam_id
Модели:
class User extends Eloquent {
    public function games() {
        return $this->belongsToMany('Game', 'userGames', 'user_id', 'game_id');
    }
}

class Game extends Eloquent {
    public function users() {
        return $this->belongsToMany('User', 'userGames', 'user_id', 'game_id');
    }
}
Ограничение в построителе запросов

Используя обычный LaravelQuery Builder Я могу получить всеgames которые принадлежатuser с идентификатором 1 и ограничить результат сtake() а такжеskip():

$test = DB::table('games')
    ->join('userGames', 'userGames.game_id', '=', 'games.id')
    ->where('userGames.user_id', '=', '1')->take(3)->skip(2)->get();

Слушаяilluminate.query событие, которое я вижу, что запрос, сгенерированный этим:

select * from `games`
inner join `userGames`
on `userGames`.`game_id` = `games`.`id`
where `userGames`.`user_id` = ?
limit 3 offset 2
Предел в Eloquent ORM

Когда я пытаюсь воссоздать тот же запрос с Eloquent:

$test = User::find(1)->games->take(2)->toArray();

Я могу использоватьtake но добавляяskip вызывает ошибку. Также результирующий запрос фактически не содержит ограничения:

select `games`.*, `userGames`.`user_id` as `pivot_user_id`,
`userGames`.`game_id` as `pivot_game_id` from `games`
inner join `userGames`
on `games`.`id` = `userGames`.`game_id`
where `userGames`.`user_id` = ?

Таким образом, кажется, что сначала запрашивается весь результат, что не идеально при работе с большими наборами данных.

Вопрос:

Можно ли ограничить запрос Eloquent ORM так, чтобы на уровне MYSQL Query он также ограничивал результат, эквивалентныйlimit 3 offset 2?

Ответы на вопрос(1)

Ваш ответ на вопрос