我正在尝试使用Class::DBI
/Class::DBI::AbstractSearch
创建一个OR
逻辑查询。我的代码看起来像这样:SQL ::摘要::限制在OR逻辑失败
my $results = Example::CDBI::Quote->search_where(
{ field_1 => {'like', $search_string},
field_2 => {'like', $search_string}},
{logic => 'or'}
);
根据the documentation这应该工作。它表示信息被传递到SQL::Abstract::Limit
,显示为logic
参数。不幸的是,MySQL的显示在查询日志中的以下(编辑为简洁起见,假设搜索的“123”):
SELECT * FROM quote WHERE ((field_1 LIKE '123' AND field_2 LIKE '123'))
我已经试图改变'or'
到'OR'
(愚蠢的,但值得一试),它没有工作。我也尝试搜寻SQL::Abstract::Limit
中的逻辑,但是此运算符正在被传递给SQL::Abstract
。
如何获得SQL::Abstract::Limit
接受OR
逻辑Class::DBI
?
Class::DBI
电话SQL::Abstract::Limit
我怎么能够确定SQL::Abstract::Limit
是如何被构建。我将值放入变量名中,以便更易于阅读。
my $sql = SQL::Abstract::Limit->new({'logic' => 'OR'});
my($phrase, @bind) = $sql->where(
{'field_1'=>{'like' => '123'},'field_2'=>{'like'=>'123'}},
undef, undef, undef);
我平添了几分细节类:: DBI是如何调用SQL ::摘要和::限制。 – 2011-02-18 18:26:52