Паравинация Laravel с необработанным запросом

Я использую необработанный SQL-запрос в Laravel, потому что в начале мне было проще делать сложные запросы, поэтому я использовал их таким образом.

Теперь я хочу получить список комментариев пользователя 7, и я хотел бы разбить комментарии на страницы, в 5.

Вот что у меня есть:

$comments = DB::select( DB::raw("SELECT users.name,  reviews.comment, reviews.comment_score FROM reviews JOIN users WHERE reviews.user_id = :logged_user;")
,array('logged_user' => $user_id,));

Таким образом, этот запрос зависит от пользователя, который просматривает представление, получает переменную.

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

Если я добавлю ‘-> paginate (5)’ в конце последней круглой скобки или позже в переменную, такую ​​как $ comments-> paginate (5); Я получаю:

Ошибка: вызов функции-члена paginate () для массива

Какой-то свет на это ??

Большое спасибо! знак равно

1

Решение

Вы делаете что-то подобное для нумерации страниц.

$perPage = $request->input("per_page", 10);
$page = $request->input("page", 1);
$skip = $page * $perPage;
if($take < 1) { $take = 1; }
if($skip < 0) { $skip = 0; }

$comments = DB::select( DB::raw("SELECT users.name,  reviews.comment, reviews.comment_score FROM reviews JOIN users WHERE reviews.user_id = :logged_user;"),array('logged_user' => $user_id,));

$totalCount = $comments->count();
$results = $comments
->take($perPage)
->skip($skip)
->get();
$paginator = new \Illuminate\Pagination\LengthAwarePaginator($results, $totalCount, $take, $page);

return $paginator;

Надеюсь, это поможет вам!

-1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector