2012-10-07 3 views
0

DBIx :: Class 개체와 관련 개체를 구성하고 싶지만 나중에 개체에 insert 메서드를 호출하면 저장하는 것을 연기 할 수 있습니다. 한 번에 모두 저장되었습니다.DBIx :: Class 개체와 관련 개체를 구성하지만 나중에 저장하십시오.

다음은 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 :: 클래스의 방법입니다 미리 한 번에 하나의 삽입을하십시오. 이것이 가능한가?

답변

1

현재 그렇게 할 방법이 없습니다. new_result으로만 분리 된 오브젝트를 작성하고 나중에 삽입 할 수 있습니다. 종종 기본 키가 데이터베이스에 의해 할당되기 때문에 사용하기 전에 사용할 수 없습니다. 관계 캐시를 채워서 원하는 것을 얻을 수 있습니다. 즉시 모든 행을 삽입하지 않는 이유는 무엇입니까?

관련 문제