Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy mogę podzielić zapytanie niestandardowe na strony bez zastępowania domyślnej stronicowania?

Właściwie, jeśli MOŻESZ to zrobić za pomocą strony, MOŻESZ to zrobić za pomocą stronicowania. Możesz zajrzeć tutaj

Ale aby być bardziej konkretnym, możesz dodać warunki/limity/pola/zawieranie/zamówienie itp., których używasz w funkcji find, do funkcji stronicowania.

Nie używam grupy w paginacji, ale POWINNO działać :D

W twoim przypadku będziesz mieć coś takiego:

$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');

Mam nadzieję, że to zadziała, opublikuj komentarz swojego wyniku, jeśli nie zadziała, będziesz musiał go pominąć, ponieważ nie akceptuje warunku grupy ... chociaż myślę, że zadziała, ponieważ stronicowanie jest w końcu znaleziskiem.

EDYCJA:

Możesz spróbować zrobić coś takiego:

Zastąp paginate() i paginateCount(), ale z poprawką, przemykaj warunek, abyś mógł stwierdzić, czy jest to paginacja z posiadaniem, czy nie. Coś takiego:

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

}

Następnie robisz coś podobnego w paginateCount(), w ten sposób masz selektywną paginację. pamiętaj, aby usunąć $conditions['having'], gdy nie jest to potrzebne lub pamiętaj, aby umieścić je w miejscu, które nie ma wpływu na twoje znalezisko;)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak uruchomić polecenia mysql z terminala w instalacji MAMP?

  2. Linki do projektów nie działają na serwerze Wamp

  3. Błąd tworzenia wyzwalacza:nieprawidłowa składnia

  4. Nie można zatrzymać MySQL w systemie OS X 10.10

  5. MySQL - jak z przodu pad kod pocztowy z 0?