Как сделать пагинацию для коллекций со связью?

Для создания пагинации для коллекций со связью в Laravel, вы можете использовать метод paginate вместо метода get для получения результатов из базы данных.

Предположим, у вас есть две модели - User и Post, и у них есть связь "один ко многим". Каждый пользователь может иметь несколько постов, и вам необходимо создать пагинацию для списка всех постов конкретного пользователя.

Сначала вам нужно установить связь в модели User. В файле User.php, добавьте следующий метод:

public function posts()
{
    return $this->hasMany(Post::class);
}

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

$user = User::find($userId);
$posts = $user->posts;

Однако, для создания пагинации, нужно использовать метод paginate вместо get:

$posts = $user->posts()->paginate(10);

Здесь 10 - это количество постов на одной странице. Вы можете изменить это значение в зависимости от ваших требований.

Теперь вы можете передать переменную $posts в представление и отобразить пагинацию. В представлении вы можете использовать методы links или render для отображения пагинации:

@foreach($posts as $post)
    // Отображение каждого поста
@endforeach

{{ $posts->links() }}

Это создаст ссылки на предыдущую и следующую страницы, а также на страницу с номером. Вы можете настроить внешний вид пагинации, добавив к нему соответствующие стили и классы.

В результате у вас будет пагинация для коллекций со связью в Laravel.