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); + } }