[CDBI] ordering a has_many() dataset from TT

Marco Wise marco.wise at stanford.edu
Mon Jun 18 22:20:25 BST 2007


Hi Arshavir,

Have you tried TT's sort vmethod?

http://www.template-toolkit.org/docs/default/Manual/VMethods.html

It would look like:

[% FOREACH com IN contact.communications.sort('create_dt') %]

I'm not sure what the create_dt field holds, but if it's numbers, you  
would use nsort instead of sort.

This will fetch the results, then order them using TT.

If you are always going to get the communications ordered by  
'create_dt', you can move "order_by => 'create_dt' in your definition  
of Contact instead.

See: http://search.cpan.org/dist/Class-DBI/lib/Class/DBI.pm#Ordering

Probably something along the lines of:

Contact->has_many(communications => 'Communication', { order_by =>  
'create_dt'});

- marco

On Jun 18, 2007, at 1:37 PM, Arshavir Grigorian wrote:

> Hi,
>
> I am calling a method on an existing object to return a list of
> communications associate with it. (1:M - has_many()). However, when I
> try to sort the resulting dataset by a column in the "communication"
> table, like so (in TT)
>
> [% FOREACH com IN contact.communications({ order_by =>  
> 'create_dt' }) %]
>
> I get the following error.
>
> [Mon Jun 18 13:33:16 2007] [error] Error Processing the template:
> undef error - order_by is not a column of Communication at
> /usr/local/share/perl/5.8.7/Class/DBI/Search/Basic.pm line 115\n
> [Mon Jun 18 13:33:16 2007] [error]
>
> Please let me know if there is another way to accomplish this.
>
> TIA.
>
>
> Arshavir
>
> _______________________________________________
> ClassDBI mailing list
> ClassDBI at lists.digitalcraftsmen.net
> http://lists.digitalcraftsmen.net/mailman/listinfo/classdbi




More information about the ClassDBI mailing list