Mysql
 sql >> база данни >  >> RDS >> Mysql

Мога ли да пагинирам персонализирана заявка, без да отменя пагинацията по подразбиране?

Всъщност, ако МОЖЕТЕ да го направите с find, МОЖЕТЕ да го направите с paginate. Можете да разгледате тук

Но за да бъдете по-конкретни, можете да добавите условия/лимит/полета/съдържат/поръчка и т.н., които използвате при find, към функцията за разделяне на страници.

Не съм използвал group в paginate, но ТРЯБВА да работи :D

Във вашия случай ще имате нещо подобно:

$this->paginate = array(
   'fields' => array(
        'Product.category_id',
        'COUNT(Product.hotel_id) as total'
    ),
   'group' => array(
        'Product.category_id HAVING COUNT(Product.hotel_id) > 1')
    )
);

$data = $this->paginate('Product');

Надяваме се, че работи, публикувайте коментар за вашия резултат, ако не работи, ще трябва да го замените, защото не приема груповото условие... въпреки че мисля, че ще работи, тъй като в крайна сметка пагинацията е находка.

РЕДАКТИРАНЕ:

Може да опитате да направите нещо подобно:

Отменете paginate() и paginateCount(), но с настройка, промъкнете условие, за да можете да разберете дали е пагинация с наличието или не. Нещо като това:

function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()){
   //if no having conditions set return the parent paginate 
   if (empty($conditions['having'])
       return parent::paginate($conditions, $fields, $order, $limit, $page, $recursive, $extra)
   //if having conditions set return your override

//override code here

}

След това правите нещо подобно в paginateCount(), по този начин имате селективно paginate. не забравяйте да направите unset $conditions['having'], след като не е необходимо или не забравяйте да го поставите някъде, което не влияе на вашето намиране;)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ГРУПА ПО възрастов диапазон, включително нулеви диапазони

  2. Надстройте MySQL до MariaDB 10 (Част 2 – Надстройте MariaDB/MySQL 5.5 до версия 10.0)

  3. ГРЕШКА 1396 (HY000):Операцията CREATE USER неуспешна за 'jack'@'localhost'

  4. EF6 MySql:Update-Database -Script генерира SQL без точка и запетая

  5. Как да изберете име на домейн от имейл адрес