我想构造一个 DBIx::Class 对象及其相关对象,但推迟保存对象,insert
稍后在对象上调用该方法,然后一次保存所有内容。
这是基于 DBIx::Class 文档(艺术家、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 方法来预先完成所有对象构造,然后进行单个插入一段时间以后。这可能吗?