Drkcore

30 01 2007 DBIC Tweet

DBICのSingleメソッド

というか、findとの違いがいまいち。searchは分かるのでいいとして、

DBIx::Class::ResultSet - Responsible for fetching and creating resultset. - search.cpan.org

Inflates the first result without creating a cursor if the resultset has any records in it; if not returns nothing. Used by "find" as an optimisation.

カーソルを作らずに最初の結果をインフレートする、ただし結果がない場合はなにも返さない。

じゃぁ、findって何?ってことになるわけだが。

findって主キーから探すときにしか使ってなかったけど、ユニーク制約かけてあるとこから探してもいいのね。知らんかった。

DBIx::Class::ResultSet - Responsible for fetching and creating resultset. - search.cpan.org

Finds a row based on its primary key or unique constraint.

singleだと

Return Value: $row_object?

と?がついているのに、findは

Return Value: $row_object

となっているということは、singleはオブジェクトを返すかもしれないし返さないかもしれないのに対し、findの場合は必ずオブジェクトが返ってくるということか。

じゃぁ、ユニーク制約はどこでどうすんの?ってことだけど、 add_unique_constraintにあるようにDBICに制約属性ふっておけばいいらしいので、DBICが制約が張られているのをチェックしてよきに計らってくれるのだろう。(確認してないけど)

というわけで、多対多とか一対多の場合に制約属性ふっておくと検索するときに楽になるのね。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021