[Dbix-class] natural sort by column

Emily Heureux emily at burnham.org
Fri Jun 13 23:23:28 BST 2008


Hi Byron.  I have the sorting algorithm that works on arrays at this point.
My question is even more basic.  How do I create a @data (or even a %data)
like you have below, from a result set?

Emily

> -----Original Message-----
> From: Byron Young [mailto:Byron.Young at riverbed.com]
> Sent: Friday, June 13, 2008 3:09 PM
> To: DBIx::Class user and developer list
> Subject: RE: [Dbix-class] natural sort by column
> 
> Hi Emily,
> 
> This is untested and inelegant, but might get you closer to what you want:
> 
> my @data = $c->model('DB::MyModel')->search(...);
> 
> @data = sort { $a->sort_column =~ /^(.*)(\d*)$/;
>                my $a_prefix = $1; my $a_suffix = $2;
>                $b->sort_column =~ /^(.*)(\d*)$/;
>                my $b_prefix = $1; my $b_suffix = $2;
>                $a_prefix cmp $b_prefix ||
>                $a_suffix <=> $b_suffix } @data;
> 
> 
> Byron
> 
> 
> 
> 
> From: Emily Heureux [mailto:emily at burnham.org]
> Sent: Friday, June 13, 2008 2:47 PM
> To: 'DBIx::Class user and developer list'
> Subject: [Dbix-class] natural sort by column
> 
> Ok, I have tried to accomplish my 'natural' sort in mysql, template
> toolkit, and in perl to no avail.  I have a result set returned by using
> search like this:
> 
> $rs = $c->model('DB::TableName')->search(...);
> 
> I have a 'natural sort' function in perl that takes and returns an array
> sorted the way a human would sort (john10 would come AFTER john2, etc) but
> how do I get my $rs or even $col = $rs->get_column('column name') into a
> hash I can use from within perl?
> 
> -Emily
> 
> 
> 
> 
> _______________________________________________
> List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
> Searchable Archive: http://www.grokbase.com/group/dbix-
> class at lists.rawmode.org





More information about the DBIx-Class mailing list