DBIx::Classその2

期待にこたえてw

DBIx::Class::Table::searchメソッドを実行したときの流れ

DBIx::Class::Table::searchメソッドを実行

$attrs->{where}に検索条件をセット

DBIx::Class::Table::resultsetメソッドを実行

_resultset_classフィールドに設定されているDBIx::Class::ResultSetを取得

DBIx::Class::ResultSetをevalを使ってuse

DBIx::Class::ResultSet::newメソッドを実行

DBIx::Class::Table::searchメソッドを呼び出している元が返却値として、、
スカラーを求めていれば、DBIx::Class::ResultSet::newメソッドで生成したオブジェクトを返却
配列を求めていれば、DBIx::Class::ResultSet::allメソッドの実行結果を返却。

スカラーを求めている場合は、
DBIx::Class::ResultSet::newメソッドで生成したオブジェクト経由で
nextメソッドを実行させたりcountメソッドを実行させたりさせますね。

配列を求めている場合の、
DBIx::Class::ResultSet::allメソッドは最終的にDBIx::Class::Storage::DBI::Cursor::allメソッドに
行き着いて、SQLをexecute&fetchall_arrayrefした結果の配列を
DBIx::Class::ResultSet::_construct_objectメソッドに渡して、結果をオブジェクト化させてるのかな?
で、 それを配列にまとめて返すと。
DBIx::Class::ResultSet::_construct_objectメソッドはまだしっかりみてませぬ。


ここまでDBIx::Classをみてて思ったのが、もう一度DBIから復習したほうが幸せになれそうってことw
まだまだだなぁ。。。