DBIC の中から直で SQL 発行
ある程度複雑な SQL なら SQL そのもの書いちゃったほうが分かりやすいんだよねーと思ったので、DBIC の中でいろいろ試した。で、こんなんで何とかできた。
my $result = $c->model('DBIC')->schema->storage->dbh_do ( sub { my ($storage, $dbh) = @_; $dbh->selectall_arrayref('select * from users'); });
テストなのでめちゃくちゃ簡単な SQL。というか DBI のメソッドをよく知らないのでそっちで悩んだ。
一つ疑問なのは、dbh_do の在処。最初 schema->storage->sql_maker->dbh_do を試したけど上手くいかず、DBIx::Class::Storage::DBI のサンプルコードを見て、schema->storage->dbh_do にした。
んでも DBIx::Class::Storage には dbh_do に関する記述はなし。よく分かりません。