[Dbix-class] Order by

Gavin Carr gavin at openfusion.com.au
Fri Jun 16 07:20:11 CEST 2006


Hi Brett,

On Fri, Jun 16, 2006 at 11:14:05AM +1000, brett gardner wrote:
> Is there anyway in DBIx::Class to set in the table class object the 
> fields you want the results to be sorted by by default. eg
> 
> __PACKAGE__->table('foo');
> __PACKAGE__->add_columns(qw/foo_id foo bar/);
> __PACKAGE__->sort_column('bar');
> 
> Or do you have to manually set the order_by field statement everywhere 
> you try and retrieve these items?

I don't think there's anything built in for this, but you could just
override your ResultSet search and insert a default order_by into the 
attribute hash if one doesn't already exist.

> Also, is there an ability to have named groups of columns similar to 
> Class::DBI? eg
> 
> __PACKAGE__->add_column_group('menu'=>qw/foo bar/);
> 
> This would be useful for a default handler to display a menu of items. I 
> have actually implemented this myself but I don't think I did it in a 
> very smart or efficient way.

Yep - see the docs for DBIx::Class::CDBICompat - you want ColumnGroups,
which allows:

  __PACKAGE__->columns(menu => qw/foo bar/);

Cheers,
Gavin




More information about the Dbix-class mailing list