2011-07-26 64 views
0

我仍在學習Perl和CLASS :: DBI。我有一個腳本可以執行一系列的查找操作,而且我只想插入通過查找找到的新項目。我爲用戶名create_at創建了一個組合鍵,我使用下面的代碼將其插入到表中。如何識別是否找到或創建記錄:class :: dbi find_or_create

一切正常,但我想知道該記錄是否被找到或是否創建了記錄。我懷疑有一個簡單的方法可以做到這一點,但顯然我不知道要搜索的正確術語。

請幫忙。

謝謝!

eval { 
    FEED::COLLECTION->find_or_create({ 
     username => $user->{username}, 
     created_at => $status->{created_at}, 
     status => $status->{text} 
    }); 
}; 
if ([email protected]) { 
    warn [email protected]; 
} 
+0

這不是你應該問一個問題,所以我不知道是什麼問題,你認爲答案會幫你解決。 – darch

回答

3

Class::DBI不會因對象實例化什麼路線記得,我認爲想知道表明,一個是問錯了問題,需要重新組織問題的一個正在設法解決。

如果你真的覺得你需要知道,但不要使用find_or_create。它沒有做任何特別聰明的事情;這只是一個便利的例程。因此,重新實現它和註釋對象爲已經發現:

sub my_find_or_create { 
    my $class = shift; 
    my $hash  = ref $_[0] eq "HASH" ? shift: {@_}; 
    my ($exists) = $class->search($hash); 

    if (defined $exists) { 
     $exists->{_I_found_this_in_the_back} = 1; # or whatever means of noting preexistence you favor 
     return $exists; 
    } else { 
     return $class->insert($hash); 
    } 
} 
相關問題