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.
_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/[email protected]