2011-07-26 10 views
0

私はまだPerlとCLASS :: DBIを学んでいます。私は検索の束を行うスクリプトを持っており、検索で見つかった新しい項目を挿入したいだけです。ユーザー名created_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は、オブジェクトがインスタンス化されたものをルートで覚えていない、と私が知りたいことは1が間違った質問をしていることを示唆していると1が解決しようとしている問題を修正してくださいする必要があると思います。

実際に知りたいと思えば、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); 
    } 
} 
関連する問題