Могу ли я использовать смещение (пропустить) с GroupBy? - PullRequest
3 голосов
/ 24 апреля 2019

Ниже мой запрос, и я добавил описание, что я хочу.

$recommendedByVideoId = RecommendedVideo::selectRaw('video_id,id')
                ->orderBy('played_count', 'desc')
                ->orderBy('updated_at', 'desc')
                ->get()
                ->skip(3)
                ->take(2)
                ->groupBy('video_id')

Ниже мой результат запроса:

        [video_id_1] => [record1, record2, record3, record4, record5],
        [video_id_2] => [record1, record2, record3, record4, record5],
        [video_id_3] => [record1, record2, record3, record4, record5],
        [video_id_4] => [record1, record2, record3, record4, record5],
        [video_id_5] => [record1, record2, record3, record4, record5, record6, record7],

Ожидаемый результат должен быть примерно таким:

        [video_id_1] => [record4, record5],
        [video_id_2] => [record4, record5],
        [video_id_3] => [record4, record5],
        [video_id_4] => [record4, record5],
        [video_id_5] => [record4, record5],

Пожалуйста, помогите мне написать запрос, который пропускает записи из внутренней коллекции, а не из внешней.

Спасибо.

1 Ответ

1 голос
/ 24 апреля 2019

здесь уже ответили в statckoverflow пропустить первый ряд и взять остальное

так что для использования этого, вы должны использовать метод take с skip, потому что со смещением вы даете число справа.

Итак, сначала получите count количество строк в базе данных.

$count = Model::count()

Тогда $skip = 3 найдите limit, который вы предоставляете для take метода $limit = $count - $skip А теперь вот вам последний запрос

Model::skip($skip)->take($limit)->get();

вы также можете использовать его с groupBy

и, если вы не хотите изменять запрос, получите все данные без skip или take и использовать метод сбора except

$data = $dataFromDataBase->except([0,1,2]);

автоматически удалит данные ключи из ваших данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...