Проблема разбиения на страницы в codeigniter 4 с использованием Query Buildeer - PullRequest
0 голосов
/ 03 апреля 2020

Я так глубоко люблю ci4 с помощью построителя запросов, но мне трудно сделать нумерацию страниц.

При проверке на документы это объясняет только то, как его использовать, с объяснением «Построитель запросов без модели».

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

Контроллер:

$blog = new BlogModel();

            //* Retrieve blogs
            $total = $blog->getActiveBlogTotal();

            $segment = route_to('adminBlogPost', 'active');
            if($this->request->uri->getTotalSegments() == 4)
            {
                $page = $this->request->uri->getSegment(4);
            }
            else
            {
                $page = 1;
            }
            $perPage = 5;
            $pages = $pager->makeLinks($page, $perPage, $total, 'admin_pag', 5);

            $blogs = $blog->getActiveBlogsInAdmin($page);
            return $this->smarty->view('blog/active.tpl', compact(
                'blogs',
                'pages'
            )); 

Модель:

//* Get blog in admin
public function getActiveBlogsInAdmin($page)
{

    $table = $this->db->table('zd_blogs');
    $table->select('*');
    $table->join('zd_main_cats', 'zd_main_cats.main_cat_id = zd_blogs.blog_main_cat', 'left');
    $table->join('zd_users', 'zd_users.user_id = zd_blogs.blog_user', 'left');
    $table->where('zd_blogs.blog_status', 1);
    $table->where('zd_blogs.blog_deleted', 0);
    $table->orderBy('zd_blogs.blog_id', 'DESC');
    $table->limit(5, $page);
    $query = $table->get();
    if($table->countAllResults() > 0)
    {
        return $query->getResult();
    }
    else
    {
        return FALSE;
    }
} 

Я буду очень признателен, если кто-то может быть достаточно добрым, чтобы дать мне ясный

1 Ответ

0 голосов
/ 04 апреля 2020

Кажется, вы тут все перемешиваете. Ваш запрос к базе данных ограничен 5 результатами с предложением LIMIT в вашей функции getActiveBlogsInAdmin(). Поэтому при текущей настройке нумерации страниц вы всегда будете иметь только одну страницу.

Вам необходимо вернуть полный набор данных, чтобы класс Pager мог отобразить First / Last / et c. ссылки на страницы.

Удалить строку: $table->limit(5, $page);

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