[Dbix-class] DBIx-Class-ResultSet-AdvancedWebSearch

Marc Mims marc at questright.com
Thu Sep 25 17:19:17 BST 2008


* Marc Mims <marc at questright.com> [080925 08:48]:
> Unless I misread the code...

I did, indeed, mirsead the code.  Here's a version that returns the
correct $full_name and join condition.

	-Marc

diff --git a/lib/DBIx/Class/ResultSet/AdvancedWebSearch.pm b/lib/DBIx/Class/ResultSet/AdvancedWebSearch.pm
index 8dcc2d2..2b72854 100644
--- a/lib/DBIx/Class/ResultSet/AdvancedWebSearch.pm
+++ b/lib/DBIx/Class/ResultSet/AdvancedWebSearch.pm
@@ -25,23 +25,12 @@ sub advanced_search {
 }
 
 sub parse_column {
-    my ( $self, $field)  = @_;
-    if( $field =~ /(.*?)\.(.*)/ ){
-        my $first = $1;
-        my $rest  = $2;
-        my( $column, $join ) = $self->parse_column( $rest );
-        if ( $join ) {
-            return $column, { $first => $join };
-        }else{
-            return $first . '.' . $column, $first;
-        }
-    }
-    elsif( $field ){ 
-        return $field;
-    }
-    else{
-        return;
-    }
+    my ($col, $join, @rest) = reverse split /\./, $_[1];
+    return $col unless $join;
+
+    my $full_name = "${join}.${col}";
+    $join = { $_ => $join } for @rest;
+    return ($full_name, $join);
 }



More information about the DBIx-Class mailing list