- for my $name ( keys %$updates ) {
- next if exists $columns{$name};
- my $value = $updates->{$name};
-
- if ( is_m2m( $self, $name ) ) {
-
- #warn "update m2m $name\n";
- my ($pk) = _get_pk_for_related( $self, $name );
- my @rows;
- my $result_source = $object->$name->result_source;
- my @updates;
- if ( !defined $value ) {
- next;
- }
- elsif ( ref $value ) {
- @updates = @{$value};
+ for my $name ( keys %m2m_accessors ) {
+ my $value = $m2m_accessors{$name};
+
+ #warn "update m2m $name\n";
+ # TODO: only first pk col is used
+ my ($pk) = _get_pk_for_related( $self, $name );
+ my @rows = ();
+ my $result_source = $object->$name->result_source;
+ my @updates;
+ if ( defined $value && ref $value eq 'ARRAY' ) {
+ @updates = @{$value};
+ }
+ elsif ( defined $value && !ref $value ) {
+ @updates = ($value);
+ }
+ else {
+ carp "value of many-to-many rel '$name' must be an arrayref or scalar";
+ }
+ for my $elem (@updates) {
+ if ( ref $elem ) {
+ push @rows, $elem;
+ # recursive_update(
+ # resultset => $result_source->resultset,
+ # updates => $elem
+ # );