[Dbix-class] SELECT from $schema1, INSERT into $schema2 ?

Matt S Trout dbix-class at trout.me.uk
Sat Mar 8 16:24:57 GMT 2008


On Mon, Feb 25, 2008 at 09:19:49AM +0000, Chisel Wright wrote:
> On Mon, Feb 25, 2008 at 08:48:01AM +0000, Chisel Wright wrote:
> >   $coldata_hashref = $record->MAGIC_FUNCTION();
> 
> .. in the meantime, this appears to do what I need:
> 
>     map {
>         $data{$_} =
>             $result->get_column($_)
>     } $result->result_source->columns;

And you've just -used- the key part of your magic function!

$result->result_source($schema2->source(ref $result));
$result->in_storage(0);
$result->insert;

If you're sure that the record will either be identical in the other DB
or not present, $result->discard_changes will figure out if it's in the DB
or not. If you have changes as well, I guess

$result->result_source($schema2->source(ref $result));
my %save = $result->get_columns;
$result->discard_changes;
$result->set_column($_ => $save{$_}) for keys %save;
$result->insert_or_update;

would do the trick.

-- 
      Matt S Trout       Need help with your Catalyst or DBIx::Class project?
   Technical Director                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://chainsawblues.vox.com/            http://www.shadowcat.co.uk/servers/



More information about the DBIx-Class mailing list