DBIx::Class オブジェクトとその関連オブジェクトを構築したいのですが、オブジェクトの保存を延期insert
し、後でオブジェクトのメソッドを呼び出し、その時点ですべてを一度に保存します。
以下は、DBIx::Class ドキュメント (artist、cd など) の例に基づくコード例です。
use MyApp::Schema;
use Data::Dumper ;
sub make_artist_from_some_other_object
{
my ($object, $schema) = @_ ;
my $artist = $schema->resultset('Artist')->new({});
$artist->name($object->firstname() . ' ' . $object->lastname()) ;
$artist->new_related('cds', {'title' => $object->firsttitle(),
'year' => $object->firstyear()}) ;
$artist->new_related('cds', {'title' => $object->secondtitle(),
'year' => $object->secondyear()}) ;
$artist->new_related('cds', {'title' => $object->thirdtitle(),
'year' => $object->thirdyear()}) ;
return $artist ;
}
my $schema = MyApp::Schema->connect('dbi:SQLite:dbname=/tmp/abcd.sqlite');
$artist = make_artist_from_some_other_object($some_object, $schema) ;
$artist->insert() ;
# The insert does _not_ save cd information.
関連するオブジェクトを保持してから個別に保存するなど、これを回避する方法があることを認識していますが、私が探しているのは、組み込みの DBIx::Class の方法であり、事前にすべてのオブジェクトの構築を行い、その後単一の挿入を行います。今度いつか。これは可能ですか?