- my $rs = $object->result_source->resultset;
- my $result_source = _get_related_source( $rs, $relation );
- return $result_source->primary_columns;
+ # DBIx::Class::IntrospectableM2M
+ if ( $rclass->can('_m2m_metadata') ) {
+ return $rclass->_m2m_metadata->{$relation};
+ }
+ my $object = $self->new( {} );
+ if ( $object->can($relation)
+ and !$self->result_source->has_relationship($relation)
+ and $object->can( 'set_' . $relation ) )
+ {
+ return 1;
+ }
+ return;
+}
+
+sub get_m2m_source {
+ my ( $self, $relation ) = @_;
+ my $rclass = $self->result_class;
+
+ # DBIx::Class::IntrospectableM2M
+ if ( $rclass->can('_m2m_metadata') ) {
+ return $self->result_source->related_source(
+ $rclass->_m2m_metadata->{$relation}{relation} )
+ ->related_source(
+ $rclass->_m2m_metadata->{$relation}{foreign_relation} );
+ }
+ my $object = $self->new( {} );
+ my $r = $object->$relation;
+ return $r->result_source;
+}
+
+sub _delete_empty_auto_increment {
+ my ( $self, $object ) = @_;
+ for my $col ( keys %{ $object->{_column_data} } ) {
+ if (
+ $object->result_source->column_info($col)->{is_auto_increment}
+ and ( !defined $object->{_column_data}{$col}
+ or $object->{_column_data}{$col} eq '' )
+ )
+ {
+ delete $object->{_column_data}{$col};
+ }
+ }