Laravel красноречивые данные извлечения перед разбивкой на страницы - PullRequest
1 голос
/ 05 августа 2020

вот запрос разбивки на страницы:

User::where('username', 'test')
      ->with('followers.follower_details')
      ->paginate(25)

, но я хочу, чтобы что-то извлекало данные перед разбивкой на страницы, например:

User::where('username', 'test')
          ->with('followers.follower_details')
          ->pluck('followers')
          ->paginate(25) 

не смог найти ничего полезного с помощью поиска в Google, никаких трюков обрабатывать эти типы запросов?

Обновлено Я попробовал способ KurtFriars, но проблема с данными:

Follower::where('following',
        User::query()->where('username', request()->username)
            ->firstOrFail()->id)->with('follower_details')->paginate(25)

ответ:

{
        "current_page": 1,
        "data": [
            {
                "id": 1,
                "user_id": 1,
                "following": 2,
                "created_at": null,
                "updated_at": null,
                "follower_details": {
                    "name": "test test2",
                    "username": "test",
                    "email": "test@gmail.com"
                }
            },
            {
                "id": 5,
                "user_id": 3,
                "following": 2,
                "created_at": null,
                "updated_at": null,
                "follower_details": {
                    "name": "test2",
                    "username": "test2",
                    "email": "test2@gmail.com",
                }
            }
        ],
        .... // paginations links 
    }

но мне просто нужно follower_details, вот так:

{
        "current_page": 1,
        "data": [
            {

                    "name": "test test2",
                    "username": "test",
                    "email": "test@gmail.com"
                
            },
            {
                    "name": "test2",
                    "username": "test2",
                    "email": "test2@gmail.com",
                
            }
        ],
        "first_page_url": "http://localhost/api/user/nod/followers?page=1",
        "from": 1,
        "last_page": 1,
        "last_page_url": "http://localhost/api/user/nod/followers?page=1",
        "next_page_url": null,
        "path": "http://localhost/api/user/nod/followers",
        "per_page": 5,
        "prev_page_url": null,
        "to": 2,
        "total": 2
    }

1 Ответ

0 голосов
/ 05 августа 2020

А как насчет того, чтобы вот так разбить

// this will pluck this user followers ids to array
$user_followers = User::where('username', 'username')->first()->followers()->pluck('id')->toArray(); 

// this will get follower details from user follower's array of ids
$follower_details = FollowerDetails::whereIn('following', $user_followers)->paginate(10);

...