Class::DBI::View::Havingにパッチ再び

Class::DBI::View::Havingにパッチ再び

 searchが使えなくてびっくり。

 昨日はAbstractSearchのsearch_whereを使ってたので気がつきませんでした。。。

--- Having.pm
+++ Having.pm
@@ -20,6 +20,26 @@
 	$sth->execute();
 	return $real_class->sth_to_objects($sth);
     };
+    *{"$class\::_do_search"} = sub {
+	my ($proto, $search_type, @args) = @_;
+	my $real_class = ref $proto || $proto;
+
+	@args = %{ $args[0] } if ref $args[0] eq "HASH";
+	my (@cols, @vals);
+	my $search_opts = @args % 2 ? pop @args : {};
+	while (my ($col, $val) = splice @args, 0, 2) {
+	    my $column = $real_class->find_column($col)
+		|| (first { $_->accessor eq $col } $real_class->columns)
+		|| $real_class->_croak("$col is not a column of $real_class");
+	    push @cols, $column;
+	    push @vals, $real_class->_deflated_column($column, $val);
+	}
+
+	my $frag = join " AND ", map "$_ $search_type ?", @cols;
+	$frag .= " ORDER BY $search_opts->{order_by}" if $search_opts->{order_by};
+	my $sth = $real_class->sql_ViewHaving("HAVING $frag");
+	return $real_class->sth_to_objects($sth, \@vals);
+    }
 }