Laravel: результаты paginate () непостоянны на разных страницах - PullRequest
1 голос
/ 06 мая 2019

У меня возникла проблема с разбивкой на страницы:

Запрос:

GET http://localhost:1000/api/v1/public/blog/articles

Ответ:

{
    "current_page": 1,
    "data": [
        {
            "article_id": 43
        },
        {
            "article_id": 107
        },
        {
            "article_id": 171
        },
        {
            "article_id": 22
        },
        {
            "article_id": 86
        },
        {
            "article_id": 150
        },
        {
            "article_id": 1
        },
        {
            "article_id": 65
        },
        {
            "article_id": 129
        },
        {
            "article_id": 44
        }
    ],
    "first_page_url": "http://localhost:1000/api/v1/public/blog/articles?page=1",
    "from": 1,
    "last_page": 18,
    "last_page_url": "http://localhost:1000/api/v1/public/blog/articles?page=18",
    "next_page_url": "http://localhost:1000/api/v1/public/blog/articles?page=2",
    "path": "http://localhost:1000/api/v1/public/blog/articles",
    "per_page": "10",
    "prev_page_url": null,
    "to": 10,
    "total": 179
}

Итак, теперь, если я запрашиваю снова по той же ссылке, он показывает другой набор статей с разными идентификаторами.Также Если я перейду на страницу = 1 или страницу = 2, то на каждой странице результаты будут непостоянными.

Я не уверен, откуда возникла эта проблема, я хочу упомянуть, чтодругие мои разбитые на страницы запросы работают нормально, за исключением случаев, когда я пытаюсь объединить запросы для получения определенного результата следующим образом:

$query = DB::query();

// Then Concatenating other queries based on options

// Now Execute The Whole Query
$fetched_articles = $query->paginate(5);

Было бы полезно, если бы кто-нибудь мог описать потоки страниц здесь с помощьюрешение или обходные пути.

Заранее спасибо!

1 Ответ

0 голосов
/ 06 мая 2019

Согласно документации Laravel

В настоящее время операции разбиения на страницы, использующие оператор groupBy, не могут быть эффективно исполнен Laravel. Если вам нужно использовать groupBy с разбитый на страницы набор результатов, рекомендуется запрашивать базу данных и создайте paginator вручную.

так, вы не можете использовать groupBy в своем запросе, если вы хотите разбить на страницы.

Кстати, вы можете попробовать это сообщение в блоге , может быть, оно будет работать для вас.

...