[Catalyst-commits] r14367 - CatalystX-CRUD/CatalystX-CRUD-Model-RDBO/trunk/lib/CatalystX/CRUD/Model

karpet at dev.catalyst.perl.org karpet at dev.catalyst.perl.org
Wed Oct 31 18:12:03 GMT 2012


Author: karpet
Date: 2012-10-31 18:12:03 +0000 (Wed, 31 Oct 2012)
New Revision: 14367

Modified:
   CatalystX-CRUD/CatalystX-CRUD-Model-RDBO/trunk/lib/CatalystX/CRUD/Model/RDBO.pm
Log:
support OneToMany relationship for find_related

Modified: CatalystX-CRUD/CatalystX-CRUD-Model-RDBO/trunk/lib/CatalystX/CRUD/Model/RDBO.pm
===================================================================
--- CatalystX-CRUD/CatalystX-CRUD-Model-RDBO/trunk/lib/CatalystX/CRUD/Model/RDBO.pm	2012-10-31 18:11:13 UTC (rev 14366)
+++ CatalystX-CRUD/CatalystX-CRUD-Model-RDBO/trunk/lib/CatalystX/CRUD/Model/RDBO.pm	2012-10-31 18:12:03 UTC (rev 14367)
@@ -354,7 +354,9 @@
     my $method = 'find_' . $rel;
     my $meta   = $self->_get_rel_meta( $obj, $rel );
     my $fpk    = $meta->{map_to}->[1];
-    return $obj->$method( [ $fpk => $foreign_pk_value ] );
+    my $args   = [ $fpk => $foreign_pk_value ];
+    my $r      = $obj->$method( query => $args );
+    return $r;
 }
 
 =head2 add_related( I<obj>, I<rel_name>, I<foreign_value> )
@@ -396,6 +398,15 @@
         return \%m;
 
     }
+    elsif ( $rel->isa('Rose::DB::Object::Metadata::Relationship::OneToMany') )
+    {
+        my $column_map = $rel->column_map;
+        my %m          = (
+            map_to => [ reverse %$column_map ],    # yes, coerce into array
+        );
+        return \%m;
+
+    }
     else {
         $self->throw_error( "unsupport relationship type: " . ref($rel) );
     }
@@ -410,7 +421,7 @@
 
 sub has_relationship {
     my ( $self, $obj, $rel_name ) = @_;
-    if (!$obj) {
+    if ( !$obj ) {
         $self->throw_error("obj not defined");
     }
     return $obj->delegate->meta->relationship($rel_name);




More information about the Catalyst-commits mailing list