X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FSchema%2FLoader%2FRelBuilder.pm;h=dbcacf2dba4affc3a7a0f1c26b0b3529d1f89bce;hb=e3c0a681dd2a328998f4176c2a3cca364295b771;hp=fb284197d99a36a41cd96705ffc133688eea1c5b;hpb=cb9c535fda0a11fd5615b0351474207a12b06992;p=dbsrgits%2FDBIx-Class-Schema-Loader.git diff --git a/lib/DBIx/Class/Schema/Loader/RelBuilder.pm b/lib/DBIx/Class/Schema/Loader/RelBuilder.pm index fb28419..dbcacf2 100644 --- a/lib/DBIx/Class/Schema/Loader/RelBuilder.pm +++ b/lib/DBIx/Class/Schema/Loader/RelBuilder.pm @@ -18,7 +18,7 @@ use String::ToIdentifier::EN::Unicode (); use Class::Unload (); use Class::Inspector (); -our $VERSION = '0.07034_02'; +our $VERSION = '0.07036_01'; # Glossary: # @@ -517,12 +517,16 @@ sub _generate_m2ms { $_->{method} eq 'has_many' && $_->{args}[1] eq $class } @{ $all_code->{$class1} }; + next unless $class1_to_link_table_rel; + my $class1_to_link_table_rel_name = $class1_to_link_table_rel->{args}[0]; my $class2_to_link_table_rel = first { $_->{method} eq 'has_many' && $_->{args}[1] eq $class } @{ $all_code->{$class2} }; + next unless $class2_to_link_table_rel; + my $class2_to_link_table_rel_name = $class2_to_link_table_rel->{args}[0]; my $class1_link_rel = $rels->[1]{args}[0]; @@ -605,6 +609,16 @@ sub _generate_m2ms { $class1_to_class2_relname, $class1_to_link_table_rel_name, $class1_link_rel, + $self->_relationship_attrs('many_to_many', {}, { + rel_type => 'many_to_many', + rel_name => $class1_to_class2_relname, + local_source => $self->schema->source($class1_local_moniker), + remote_source => $self->schema->source($class1_remote_moniker), + local_table => $self->loader->class_to_table->{$class1}, + local_cols => \@class1_from_cols, + remote_table => $self->loader->class_to_table->{$class2}, + remote_cols => \@class2_from_cols, + }) || (), ], extra => { local_class => $class1, @@ -620,6 +634,16 @@ sub _generate_m2ms { $class2_to_class1_relname, $class2_to_link_table_rel_name, $class2_link_rel, + $self->_relationship_attrs('many_to_many', {}, { + rel_type => 'many_to_many', + rel_name => $class2_to_class1_relname, + local_source => $self->schema->source($class2_local_moniker), + remote_source => $self->schema->source($class2_remote_moniker), + local_table => $self->loader->class_to_table->{$class2}, + local_cols => \@class2_from_cols, + remote_table => $self->loader->class_to_table->{$class1}, + remote_cols => \@class1_from_cols, + }) || (), ], extra => { local_class => $class2,