[Dbix-class] update and join
RAPPAZ Francois
francois.rappaz at unifr.ch
Thu Nov 13 11:34:30 GMT 2014
I have two tables joined by a "belongs to" and a "has many" relationship
Ddref
idref iduser finished created
n n--------------+
^ ¦
¦ ¦RefUser (bt iduser)
¦UserRef (hm) ¦
¦ ¦
1 1<------------+
Dduser
iduser email id_credit
idref is a primary key for Ddref
iduser is a pk for Dduser
In Dduser.pm
__PACKAGE__->belongs_to(RefUser=> 'Dbc::Schema::Result::Dduser', {'foreign.iduser' => 'self.iduser'});
In Dduser.pm
__PACKAGE__->has_many(UserRef => 'Dbc::Schema::Result::Ddref', {'foreign.iduser' => 'self.iduser'});
I would like to update the field id_credit in Ddref :
my $href2 = {
'+select' => [ 'RefUser.id_credit', 'RefUser.email'],
'+as' => [qw/id_credit email/],
order_by => 'created',
join => ['RefUser']};
my $href = {idref => 24 };
my $rs1 = $s->resultset('Ddref')->search_rs($href, $href2);
my $row = $rs1->single;
$row->set_column('id_credit' => 28);
$row->update();
But update fails with since the sql is
UPDATE ddrefs SET id_credit = ? WHERE ( idref = ? )" with ParamValues: 0=28, 1='24'
Obviously the join is lost. What am I missing ?
Thanks
François
More information about the DBIx-Class
mailing list