Ich versuche, eine OR
logische Abfrage mit Class::DBI
/ Class::DBI::AbstractSearch
. Mein Code sieht in etwa so aus:
my $results = Example::CDBI::Quote->search_where(
{ field_1 => {'like', $search_string},
field_2 => {'like', $search_string}},
{logic => 'or'}
);
Nach Angaben von die Dokumentation sollte dies funktionieren. Es heißt, dass die Informationen an SQL::Abstract::Limit
was sich als Einnahme der logic
Parameter. Leider zeigt MySQL im Abfrageprotokoll Folgendes an (der Kürze halber bearbeitet und unter der Annahme einer Suche nach "123"):
SELECT * FROM quote WHERE ((field_1 LIKE '123' AND field_2 LIKE '123' ))
Ich habe versucht, die 'or'
a 'OR'
(albern, aber einen Versuch wert), was nicht funktioniert hat. Ich habe auch versucht, die Logik in SQL::Abstract::Limit
aber dieser Operator wird übergeben an SQL::Abstract
stattdessen.
Wie erhalte ich SQL::Abstract::Limit
zu akzeptieren OR
Logik von Class::DBI
?
Wie Class::DBI
ruft auf. SQL::Abstract::Limit
Ich konnte feststellen, wie SQL::Abstract::Limit
wird gerade gebaut. Ich habe Werte anstelle der Variablennamen eingegeben, damit es leichter zu lesen ist.
my $sql = SQL::Abstract::Limit->new({'logic' => 'OR'});
my($phrase, @bind) = $sql->where(
{'field_1'=>{'like' => '123'},'field_2'=>{'like'=>'123'}},
undef, undef, undef);