Как использовать paginate в необработанных сложных запросах к БД - PullRequest
0 голосов
/ 09 июня 2019

Пожалуйста, помогите мне, ребята, использовать класс lagvel Paginate с необработанным сложным запросом к БД ...

Пробовал некоторые хитрости, чтобы получить результат с помощью paginate laravel, но из-за сложности запроса это создало проблему для меня

$data = DB::select(DB::raw("SELECT DISTINCT c.id, c.name, c.active, c.image, c.created_at, (SELECT COUNT(*) FROM categories WHERE c.id=parent_id) AS subcat_count, (SELECT COUNT(*) FROM post_ads WHERE c.id=cat_id) AS postad_count FROM categories AS c LEFT OUTER JOIN categories AS subc ON c.id = subc.parent_id LEFT OUTER JOIN post_ads AS postadc ON c.id = postadc.cat_id WHERE c.parent_id=0 ORDER BY c.name ASC LIMIT 9"));

1 Ответ

0 голосов
/ 09 июня 2019

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

use Illuminate\Pagination\LengthAwarePaginator;
...
class StudentAvailablitiesController extends Controller
{
   public function index()
   {
       $collection = DB::select(DB::raw...)->get();
       $paginatedData = $collection->paginate(10);
   }

   public function paginate($perPage, $total = null, $page = null, $pageName = 'page')
   {
        $page = $page ?: LengthAwarePaginator::resolveCurrentPage($pageName);

        return new LengthAwarePaginator(
            $this->forPage($page, $perPage),
            $total ?: $this->count(),
            $perPage,
            $page,
            [
                'path' => LengthAwarePaginator::resolveCurrentPath(),
                'pageName' => $pageName,
            ]
        );
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...