[Dbix-class] Update All Related Tables
Ozum Eldogan
ozum at proksima.com.tr
Thu Oct 16 12:01:29 BST 2008
I'm working on a simple bill recording system. A company may have many bills
and I want to update both company and a related bill with a single update
method call.
Table: companies
package Schema::Company;
__PACKAGE__->has_many("bills", "Schema::Bill", { "foreign.company_id" =>
"self.id" });
Table: bills
package Schema::Bill;
__PACKAGE__->belongs_to("company", "Schema::Company", { id => "company_id"
});
For testing purposes I have only one company and several bills belongs to
that company. In my code I get a company and all bills via
my $rs = $app->schema->resultset('Bill')->search(
{
'me.id' => {'>', 0}
},
{
join => [qw/company/],
prefetch => [qw/company/],
}
);
my $record = $rs->next;
print $record->bill_description; # prints 'Bill for development'
$record->bill_description('Service Bill');
print $record->company->name; # prints 'Speed Inc.'
$record->company->name('Slow Inc.');
$record->update; # updates only bill
$record->company->update; # updates company
I want $record->update to update both bill and related company. In future I
may have lots of related tables and I don't want to iterate through and hand
code check and update all changed records.
I searched all manuals, googled and researched this mailing list but
couldn't find a proper way or any method in DBIx::Class.
Any help is very appreciated.
More information about the DBIx-Class
mailing list