[Dbix-class] Bug (?) with foreign key / relationship updates
Matt S Trout
dbix-class at trout.me.uk
Sun Apr 30 05:42:25 CEST 2006
Gavin Carr wrote:
> On Sat, Apr 29, 2006 at 05:18:54PM +0100, Matt S Trout wrote:
>> Gavin Carr wrote:
>>> There seems to be a bug in .06002 where an update on a foreign key
>>> does not get picked up by the relationship (belongs_to) attached to
>>> that key. Example, from the DBIx::Class::Manual::Example schema:
>>>
>>> # Update $cd foreign key
>>> $cd->set_column('artist', $mj->artistid);
>>> $cd->update;
>> Err, but you just bypassed the stuff that actually triggers the clear on the
>> related object -
>>
>> $cd->artist($mj);
>>
>> or
>>
>> $cd->artist($mj->artistid);
>>
>> would both work.
>
> Ah okay, thanks - I was under the impression that that the column
> methods and set_column were equivalent (are they in Class::DBI?)
I suspect they are in Class::DBI, since in Class::DBI everything happens in
the monolithic get/set routines - which are one of the big performance sappers
as well as being a FPITA to extend.
> Can you explain what the difference is between them then Matt?
belongs_to on a single column will setup an inflate_column on that attribute,
at which point ->artist is calling get/set_inflated_column instead. We should
probably provide get and set methods that figure out which accessor type
should be used and call it, or some better solution I can't think of at 4am.
> Should that distinction be mentioned in the DBIx::Class::Row docs?
Mmm, or at least a pointer to InflateColumn. Patches welcome :)
--
Matt S Trout Offering custom development, consultancy and support
Technical Director contracts for Catalyst, DBIx::Class and BAST. Contact
Shadowcat Systems Ltd. mst (at) shadowcatsystems.co.uk for more information
+ Help us build a better perl ORM: http://dbix-class.shadowcatsystems.co.uk/ +
More information about the Dbix-class
mailing list