Forums / Developer / Sorting objects based on attribute (not in fetch though)

Sorting objects based on attribute (not in fetch though)

Author Message

Kedar Deshpande

Saturday 23 January 2010 10:41:19 am

Hi, this question has been asked in the past but is usually solved by a sort_by in the fetch command. Another well known problem is the fact that you cant do an attribute sort when using the reverse_related_objects function other than the publish_date, modified_date etc.

In this post:

http://share.ez.no/forums/setup-design/fetch-reverse-related-objects-and-sort_by-attribute

someone mentions creating a custom template function like:

$sorted = {$unsorted|sort('your_attribute',true())}

Has anyone created such a function that they could share? Any function that sorts a collection of objects would help.

thanks.

Carlos Revillo

Saturday 23 January 2010 12:09:14 pm

you can try with an extended attribute filter then. use your sql debug output to see how normal reverse_related_objects works and do something similar with your extended attribute filter.

for extended_attribute_filter you can have a look at ezstarrating extension.

about template function, i wouldn't go like that. i mean, it seems you're doing the database query and then ordering the results, but with an extended_attribute_filter you can just the results sortered. better for perfomance i think.

Kedar Deshpande

Saturday 23 January 2010 2:09:16 pm

Thanks Carlos, I'll check out the extended attribute filter and see if I can make it do sorting on this specific attribute I have. I also appreciate the feedback on the template function idea, it does make more sense to do the sort on the fetch.

Carlos Revillo

Sunday 24 January 2010 2:07:24 am

Sure. suppose you have a 10.000 objects, but you only need to show 10 of them ordered by one of the attrs. usign that template custom operator, you will have to get all of 10.000 and then php will sort them. then you will have to use some kinda array_slice operator to get only 10.

you can certainly do all those steps in just one query.

Alex Kozeka

Tuesday 05 July 2011 3:08:42 am

Hi Carlos,

Maybe you find this extension useful:

http://projects.ez.no/sortobjectsoperators

--
Argentea S.p.A., http://www.argentea.it/