If a view is out then I think you're best bet is to keep the DB records in the order you need and leave pagination to just limiting the number. Have a look at the SortableBehavior. Perhaps you could hack up a routine that ensures the records remain sorted properly even as new ones are added.
On Wed, Nov 14, 2012 at 1:26 AM, char <[email protected]> wrote: > Hi all, > > I've got a problem which I hope is interesting to everyone. > > Got a generic table, in which each item has an image and an attribute that > says wether the orientation is portriat or landscape. > > id int(10) unsigned NOT NULL > namevarchar(255) NULL > image varchar(255) NULL > image_portrait tinyint(1) unsigned NOT NULL > > Now I need to paginate the results so that there are always 1 portrait > images for every 2 landscape images. > > So if I wanted paginated results with limit of say 6, it should return the > following: > > array( > (int) 0 => array( > 'Item' => array( > 'id' => '1', > 'name' => 'container', > 'image' => 'CH1.a.jpg', > 'image_portrait' => '1' > ) > ), > (int) 1 => array( > 'Item' => array( > 'id' => '5', > 'name' => 'container', > 'image' => 'CH1.b.jpg', > 'image_portrait' => '0' > ) > ), > (int) 2 => array( > 'Item' => array( > 'id' => '13', > 'name' => 'container', > 'image' => 'CH21.c.jpg', > 'image_portrait' => '0' > ) > ), > (int) 3 => array( > 'Item' => array( > 'id' => '4', > 'name' => 'container', > 'image' => 'CH13.e.jpg', > 'image_portrait' => '1', > ) > ), > (int) 3 => array( > 'Item' => array( > 'id' => '24', > 'name' => 'container', > 'image' => 'CH19.jpg', > 'image_portrait' => '0', > ) > ), > (int) 3 => array( > 'Item' => array( > 'id' => '154', > 'name' => 'container', > 'image' => 'CH13.jpg', > 'image_portrait' => '0', > ) > ), > ) > > A few possibilities: > - unioning portraits with landscapes to make sure the numbers match (limit x > and limit 2x), but that is a lot of work with the built-in pagination (if > possbile at all). > > - still paginate on the entire table and use that for the helper, on top of > that, also paginate on landscapes (limit 2x/3) and portraits (limit x/3) > seperately and use that to get the actual display data. > > - make the union a view then paginate on that, but the current hosting > provider doesn't give me the privillage to create views... > > Any interesting solutions or suggestions? > > Cheers > Char > > -- > Like Us on FaceBook https://www.facebook.com/CakePHP > Find us on Twitter http://twitter.com/CakePHP > > --- > You received this message because you are subscribed to the Google Groups > "CakePHP" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > Visit this group at http://groups.google.com/group/cake-php?hl=en. > > -- Like Us on FaceBook https://www.facebook.com/CakePHP Find us on Twitter http://twitter.com/CakePHP --- You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. Visit this group at http://groups.google.com/group/cake-php?hl=en.
