sql >> Databasteknik >  >> RDS >> Mysql

Kan jag paginera en anpassad fråga utan att åsidosätta standardpagineringen?

Om du KAN göra det med hitta KAN du faktiskt göra det med paginering. Du kan ta en titt här

Men för att vara mer specifik kan du lägga till villkor/gräns/fält/innehåll/ordning etc som du använder för att hitta till sidnumreringsfunktionen.

Jag har inte använt grupp i sidnumret men det SKA fungera :D

I ditt fall kommer du att ha något sånt här:

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

Hoppas det fungerar, skriv en kommentar på ditt resultat, om det inte fungerar måste du åsidosätta det, eftersom det inte accepterar gruppvillkoret... även om jag tror att det kommer att fungera eftersom paginering är ett fynd i slutändan.

EDIT:

Du kan försöka göra något så här:

Åsidosätt paginate() och paginateCount() men med en tweak, smyg ett villkor så att du kan se om det är en paginering med att ha eller inte. Något så här:

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

}

Sedan gör du något liknande i paginateCount(), på så sätt har du en selektiv paginering. kom ihåg att göra unset $villkor['having'] när det inte behövs eller kom ihåg att placera det någonstans som inte påverkar ditt fynd;)



  1. Hur man hanterar MySQL-databaser, användare och tabeller från kommandoraden

  2. Söker efter ett tomt fält med MySQL

  3. Subtrahera månad och dag mysql

  4. Lagring av binära datatyper i SQL Server