[Moscow.pm] DBIx::SearchBuilder
Nikolay Mishin
mi на ya.ru
Сб Фев 21 16:32:36 PST 2015
Я бы дописал этот оператор в модуле:
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, "Алексей Мышкин" <parserpro на gmail.com>:
> Привет всем!
>
> Возник довольно срочный вопрос - как в DBIx::SearchBuilder сделать такое (если хоть кто-то в курсе):
>
> SELECT a, b
> FROM t
> WHERE a > b
>
> Используется этот модуль в Request Tracker'e
>
> --
> С уважением,
> Мышкин Алексей.
>
> ,
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
--
С уважением
Николай Мишин
Подробная информация о списке рассылки Moscow-pm