NAME

Persistence::Relationship::OneToMany - One to many relationship.

CLASS HIERARCHY

Persistence::Relationship
   |
   +----Persistence::Relationship::OneToMany

SYNOPSIS

#.... entities definition
my $membership_entity = Persistence::Entity->new(
    name    => 'wsus_user_service',
    alias   => 'us',
    primary_key => ['user_id', 'service_id'],
    columns => [
        sql_column(name => 'user_id'),
        sql_column(name => 'service_id'),
        sql_column(name => 'agreement_flag')
    ],
);

my $user_entity = Persistence::Entity->new(
    name    => 'wsus_user',
    alias   => 'ur',
    primary_key => ['id'],
    columns => [
        sql_column(name => 'id'),
        sql_column(name => 'username', unique => 1),
        sql_column(name => 'password'),
        sql_column(name => 'email'),
    ],
    to_many_relationships => [sql_relationship(target_entity => $membership_entity, join_columns => ['user_id'], order_by => 'service_id, user_id')]
);
$entity_manager->add_entities($membership_entity, $user_entity);

# object mapping
package User;

use Abstract::Meta::Class ':all';
use Persistence::Entity ':all';
use Persistence::ORM ':all';

entity 'wsus_user';
column id => has('$.id');
column username => has('$.name');
column password => has('$.password');
column email => has('$.email');

one_to_many 'wsus_user_service' => (
    attribute    => has('@.membership' => (associated_class => 'Membership')),
    fetch_method => EAGER,
    cascade      => ALL,
);

DESCRIPTION

Represents one to many relationship. Allows cascading operation (inert/update/delete). Supports eager, lazy fetch, cascading operation (inert/update/delete).

EXPORT

one_to_many method by ':all' tag.

METHODS

one_to_many

Create a new instance of one to many relation. Takes associated entity's id as parameters and list of named parameters for Persistence::Relationship::OneToMany constructor.

one_to_many 'wsus_user_service' => (
    attribute    => has('@.membership' => (associated_class => 'Membership')),
    fetch_method => EAGER,
    cascade      => ALL,
);
deserialise_attribute

Deserialises relation attribute

insert

Inserts relationship data.

merge

Merges relationship data.

delete

Merges relationship data.

SEE ALSO

Persistence::Relationship Persistence::Entity Persistence::Entity::Manager Persistence::ORM

COPYRIGHT AND LICENSE

The Persistence::Relationship::OneToMany module is free software. You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.

AUTHOR

Adrian Witas, adrian@webapp.strefa.pl