2012-11-14 71 views
1

你好,親愛的社區成員。DBIx類:在結果集中重載new()

我有以下問題。說,我有一個用戶表。在編程期間,我爲這個表創建了很多搜索查詢。然後,後來,我意識到我需要始終只選擇「活動」用戶,即將「活動」列設置爲TRUE。現在,我可以在結果集類中重載new()或者做一些能夠全面改變我的所有查詢的方法,而不是使用額外的過濾器(active =>「true」)來調整所有查詢我需要?

非常感謝。

回答

1

添加一個方法來您的用戶ResultSet類返回一個結果集過濾,例如:

sub search_active { 
    my $self = shift; 
    return $self->search({ active => 1 }); 
} 

也可參閱「預定義搜索」的DBIx ::類文檔的更多信息。

+0

嗨。感謝您的回答。但這不是我所需要的。我已經有很多現有的查詢。現在,我不需要逐個更改它們,而是需要在代碼中進行一次更改的地方,這會影響我所有的現有查詢。 –

+0

根據我的經驗,您後悔當您需要不僅需要活動行的查詢時,纔會後悔。如果您使用的是Catalyst,那麼Chained的完美用例就是將此過濾器應用於位於您的動作鏈頂端的隱藏結果集。 –

+0

如果你事先知道你需要什麼,那麼是的,你可以過濾Chained中的結果集,但不是當你需要回顧性地完成時。 –