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
まだまだだなぁ。。。