簡體   English   中英

DBIx :: Class :: ResultSet問題

[英]DBIx::Class::ResultSet problems

我有以下代碼:

package MyPackage::ResultSet::Case;
use base 'DBIx::Class::ResultSet';

sub cases_last_fourteen_days {
    my ($self, $username) = @_; 

    return $self->search({
                username    => $username,
                date        => { '>=' => 'DATE_SUB(CURDATE(),INTERVAL 14 DAY)' },
    }); 
};

但是當我嘗試以這種方式使用它時:

$schema->resultset('Case')->cases_last_fourteen_days($username)

我總是得到零結果,誰能說出我做錯了什么?

謝謝!

您使用SQL :: Abstract條件的方式將導致以下條件:

WHERE username = ? AND date >= 'DATE_SUB(CURDATE(),INTERVAL 14 DAY)'

當您希望在where子句中使用數據庫函數時,您需要使用對標量的引用 ,如下所示:

date        => { '>=' => \'DATE_SUB(CURDATE(),INTERVAL 14 DAY)' },

ProTip :如果你將環境變量DBIC_TRACE設置為1,DBIx :: Class會將它生成的查詢打印到STDERR ......這樣你就可以檢查它是否真的符合你的意願。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM