我正在嘗試使用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