On Sun, Sep 28, 2008 at 6:56 PM, Oliver Gorwits
<[EMAIL PROTECTED]> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Zbigniew Lukasiak wrote:
>> I would like to include your critisizm of the support for many to
>> many in RecursiveUpdate in it's documentation.  Tell me if I get
>> it right. What I remember is two points:
>>
>> 1. That I rely on the fact that
>>
>> if($object->can($name) and
>> !$object->result_source->has_relationship($name) and
>> $object->can( 'set_' . $name ) )
>>
>> then $name must be a many to many pseudo relation.
>
> So my version of the heuristic goes like this:
>
> # start with a has_many relation.
> # check for related source having two belongs_to rels *only*,
> # and one of them refers to ourselves,
> # and at most one other col (id pk)
> # then the *other* rel on the related source is the "target"
>
> ...if that doesn't match, then the link table probably isn't sane,
> and the m2m code should be avoided.
>
> I have some code to do this, and am pondering its fragility before
> shipping in the next release of LFB's Metadata.pm.

I have a version of that as well - but in a different place :)  I use
it to add the m2m declarations to the Schema generated by the Loader -
ideally this could be added to the Loader code.  It might make sense
to add this here as a check as well - thanks for the idea.

>
> Ideally, DBIC would instead populate the relationship_info details
> after someone has set up __PACKAGE__->many_to_many(...). That would
> avoid this guesswork.

I have been nagging Matt about that for about 3 years (just after the
first release of InstantCRUD), there was a slight chance that this
would be added in 0.8 - but unfortunately it was somehow missed.  So
now we need to wait for the 0.9 release

-- 
Zbigniew Lukasiak
http://brudnopis.blogspot.com/
http://perlalchemy.blogspot.com/

_______________________________________________
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]

Reply via email to