| Fey-ORM documentation | Contained in the Fey-ORM distribution. |
Fey::Meta::Role::Relationship - A shared role for all foreign HasX metaclasses
version 0.43
This role provides shared functionality for has-one and has-many metaclasses. See the relevant classes for documentation.
This role adds the following constructor options:
The name of the relationship. This will be used as the name for any attribute or method created by this metaclass.
This defaults to lc $self->foreign_table()->name().
The (source) table of the foreign key.
The foreign table for the foreign key
Determines whether the relationship's value is cached. This is implemented in different ways for has-one vs has-many relationships.
Dave Rolsky <autarch@urth.org>
This software is copyright (c) 2011 by Dave Rolsky.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
| Fey-ORM documentation | Contained in the Fey-ORM distribution. |
package Fey::Meta::Role::Relationship; BEGIN { $Fey::Meta::Role::Relationship::VERSION = '0.43'; } use strict; use warnings; use namespace::autoclean; use Fey::ORM::Types qw( Bool CodeRef Str TableWithSchema ); use Moose::Role; has associated_class => ( is => 'rw', isa => 'Fey::Meta::Class::Table', writer => '_set_associated_class', clearer => '_clear_associated_class', weak_ref => 1, init_arg => undef, ); has name => ( is => 'ro', isa => Str, lazy => 1, builder => '_build_name', ); has namer => ( is => 'ro', isa => CodeRef, required => 1, ); has table => ( is => 'ro', isa => TableWithSchema, required => 1, ); has foreign_table => ( is => 'ro', isa => TableWithSchema, required => 1, ); has is_cached => ( is => 'ro', isa => Bool, lazy => 1, builder => '_build_is_cached', ); sub _build_name { my $self = shift; return $self->namer()->( $self->foreign_table(), $self ); } 1; # ABSTRACT: A shared role for all foreign HasX metaclasses
__END__