[Dbix-class] many_to_many and search_related
Matt S Trout
dbix-class at trout.me.uk
Thu Sep 21 17:59:44 CEST 2006
Rolf Schaufelberger wrote:
> Hi,
>
>> Rolf Schaufelberger wrote:
>>> Hi,
>>> I'm currently trying to move my application from CDBI to Dbix::Class.
>>>
>>> Now I have a many_to many relationship and I want to do a search on the
>>> related table as described in the pod. yet I get an errror:
>>>
>>> DBIx::Class::Relationship::Base::search_related(): No such relationship
>>> motive at t/05_format.t line 26
>>>
>>> yet, doing fetching all objects works for both directions,
>>>
>>> the lines are :
>>> PW::DB::Format.pm :
>>>
>>> ...
>>> __PACKAGE__->has_many(mformate => 'PW::DB::MFormat', 'format_id');
>>> __PACKAGE__->many_to_many('motive' => 'mformate', 'motiv_id');
>>>
>>>
>>> PW::DB::Motiv.pm :
>>> ...
>>> __PACKAGE__->has_many( mformate => 'PW::DB::MFormat', 'motiv_id');
>>> __PACKAGE__->many_to_many('formate' => 'mformate', 'format_id');
>> many-many is a bridge across two relationships.
>>
>> $obj->motive
>>
>> is pretty much equivalent to
>>
>> $obj->search_related('mformate')->search_related('motiv_id')
>
> Ok , so
>
> my $ap2 = $f->search_related('mformate')->search_related('motiv_id',
> {name=>'Airplane'});
>
> works.
>
> But according to the docs in Relationship.pm
> "..
> MyDB::Schema::Role->many_to_many('actors' => 'actorroles', 'actor');
> $schema->resultset('Role')->search_related('actors', { Name => 'Fred' });
> .."
Hmm, that may be a doc error
$role->actors->search({ Name => 'Fred' });
will work though - but the relname/mmname methods aren't carried up to the
resultset class to try and avoid collisions.
--
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