[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