Мой вопрос решился немного проще, с использованием 'QUOTEVALUE' => 1 в запросе. Так вместо значения я смог подставить имя второй колонки для сравнения.
2015-02-22 3:32 GMT+03:00 Nikolay Mishin <[email protected]>: > Я бы дописал этот оператор в модуле: > > https://metacpan.org/source/ALEXMV/DBIx-SearchBuilder-1.66/lib/DBIx/SearchBuilder.pm > > if ( $args{'OPERATOR'} ) { > #If it's a like, we supply the %s around the search term > if ( $args{'OPERATOR'} =~ /LIKE/i ) { > $args{'VALUE'} = "%" . $args{'VALUE'} . "%"; > } > elsif ( $args{'OPERATOR'} =~ /STARTSWITH/i ) { > $args{'VALUE'} = $args{'VALUE'} . "%"; > } > elsif ( $args{'OPERATOR'} =~ /ENDSWITH/i ) { > $args{'VALUE'} = "%" . $args{'VALUE'}; > } > elsif ( $args{'OPERATOR'} =~ /\bIN$/i ) { > if ( blessed $args{'VALUE'} && > $args{'VALUE'}->isa(__PACKAGE__) ) { > # if no columns selected then select id > local $args{'VALUE'}{'columns'} = > $args{'VALUE'}{'columns'}; > unless ( $args{'VALUE'}{'columns'} ) { > $args{'VALUE'}->Column( FIELD => 'id' ); > } elsif ( @{ $args{'VALUE'}{'columns'} } > 1 ) { > warn "Collection in '$args{OPERATOR}' with more than > one column selected, using first"; > splice @{ $args{'VALUE'}{'columns'} }, 1; > } > $args{'VALUE'} = '('. $args{'VALUE'}->BuildSelectQuery > .')'; > $args{'QUOTEVALUE'} = 0; > } > elsif ( ref $args{'VALUE'} ) { > if ( $args{'QUOTEVALUE'} ) { > my $dbh = $self->_Handle->dbh; > $args{'VALUE'} = join ', ', map $dbh->quote( $_ ), @{ > $args{'VALUE'} }; > } else { > $args{'VALUE'} = join ', ', @{ $args{'VALUE'} }; > } > $args{'VALUE'} = "($args{VALUE})"; > $args{'QUOTEVALUE'} = 0; > } > else { > # otherwise behave in backwards compatible way > } > } > $args{'OPERATOR'} =~ s/(?:MATCHES|ENDSWITH|STARTSWITH)/LIKE/i; > > if ( $args{'OPERATOR'} =~ /IS/i ) { > $args{'VALUE'} = 'NULL'; > $args{'QUOTEVALUE'} = 0; > } > } > Добавить a > b > > 18.02.2015, 18:18, "Алексей Мышкин" <[email protected]>: > > Привет всем! > > > > Возник довольно срочный вопрос - как в DBIx::SearchBuilder сделать такое > (если хоть кто-то в курсе): > > > > SELECT a, b > > FROM t > > WHERE a > b > > > > Используется этот модуль в Request Tracker'e > > > > -- > > С уважением, > > Мышкин Алексей. > > > > , > > > > -- > > Moscow.pm mailing list > > [email protected] | http://moscow.pm.org > > -- > С уважением > Николай Мишин > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > -- С уважением, Мышкин Алексей.
-- Moscow.pm mailing list [email protected] | http://moscow.pm.org
