Lagvel paginate только с первым результатом - PullRequest
1 голос
/ 19 сентября 2019

Я новичок в Laravel, поэтому я надеюсь, что вопрос достаточно ясен.

У меня есть таблица с пользователями и другая таблица с задачами.

В моей модели пользователя у меня естьследующее:

public function tasks() {
    return $this->hasMany('App\User' , 'id');
}

Я могу сделать следующее, чтобы извлечь одного пользователя из БД

$users = \App\User::find(1)->tasks()->paginate();

, но я получаю

{"current_page":1,"data":[{"id":1,"name":"Ed","email":"mail@weqweqeq.com","email_verified_at":null,"created_at":null,"updated_at":null,"tasks":[{"id":1,"name":"Ed","email":"mail@weqweqeq.com","email_verified_at":null,"created_at":null,"updated_at":null}]},{"id":2,"name":"Alyse","email":"mail@rxygewe.com","email_verified_at":null,"created_at":null,"updated_at":null,"tasks":[]}],"first_page_url":"http:\/\/127.0.0.1:8000?page=1","from":1,"last_page":1,"last_page_url":"http:\/\/127.0.0.1:8000?page=1","next_page_url":null,"path":"http:\/\/127.0.0.1:8000","per_page":15,"prev_page_url":null,"to":2,"total":2}

Я также пытался:

    $users = \App\User::with(['tasks' => function($q) {
        $q->first();
    }])->paginate();

но свойство tasks пусто

У меня вопрос, как мне заставить всех пользователей работать только с первой задачей и разбить на страницы?

Таблица задач

1   id(Primary) bigint(20)      UNSIGNED    No  None        AUTO_INCREMENT
2   created_at  timestamp           Yes NULL        
3   updated_at  timestamp           Yes NULL        
4   task_name   varchar(255)    utf8mb4_unicode_ci      No  None        
5   user_id(Index)  bigint(20)      UNSIGNED    No  None        


1 Ответ

0 голосов
/ 20 сентября 2019

Ваше отношение модели определено неправильно.Вы связали пользователя со многими пользователями.
https://laravel.com/docs/master/eloquent-relationships#one-to-many

public function tasks() {
    // a User ($this) has many Tasks
    return $this->hasMany('App\Task');
}

Кроме того, будьте осторожны при использовании ->first(), так как порядок не гарантируется, если не указано.

$users = \App\User::with(['tasks' => function($q) {
    // get the most recently created task
    $q->latest()->first();
}])->paginate();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...