Help-Site Computer Manuals
Software
Hardware
Programming
Networking
  Algorithms & Data Structures   Programming Languages   Revision Control
  Protocols
  Cameras   Computers   Displays   Keyboards & Mice   Motherboards   Networking   Printers & Scanners   Storage
  Windows   Linux & Unix   Mac

Rose::DB::Object::Metadata::Relationship::OneToMany
One to many table relationship metadata object.

Rose::DB::Object::Metadata::Relationship::OneToMany - One to many table relationship metadata object.


NAME

Rose::DB::Object::Metadata::Relationship::OneToMany - One to many table relationship metadata object.


SYNOPSIS


  use Rose::DB::Object::Metadata::Relationship::OneToMany;

  $rel = Rose::DB::Object::Metadata::Relationship::OneToMany->new(...);

  $rel->make_methods(...);

  ...


DESCRIPTION

Objects of this class store and manipulate metadata for relationships in which a single row from one table refers to multiple rows in another table.

This class inherits from the Rose::DB::Object::Metadata::Relationship manpage. Inherited methods that are not overridden will not be documented a second time here. See the the Rose::DB::Object::Metadata::Relationship manpage documentation for more information.


METHOD MAP

count
the Rose::DB::Object::MakeMethods::Generic manpage, objects_by_key, interface => 'count' ...

find
the Rose::DB::Object::MakeMethods::Generic manpage, objects_by_key, interface => 'find' ...

get_set
the Rose::DB::Object::MakeMethods::Generic manpage, objects_by_key, interface => 'get_set' ...

get_set_now
the Rose::DB::Object::MakeMethods::Generic manpage, objects_by_key, interface => 'get_set_now' ...

get_set_on_save
the Rose::DB::Object::MakeMethods::Generic manpage, objects_by_key, interface => 'get_set_on_save' ...

add_now
the Rose::DB::Object::MakeMethods::Generic manpage, objects_by_key, interface => 'add_now' ...

add_on_save
the Rose::DB::Object::MakeMethods::Generic manpage, objects_by_key, interface => 'add_on_save' ...

See the Rose::DB::Object::Metadata::Relationship documentation for an explanation of this method map.


CLASS METHODS

default_auto_method_types [TYPES]
Get or set the default list of auto_method_types. TYPES should be a list of relationship method types. Returns the list of default relationship method types (in list context) or a reference to an array of the default relationship method types (in scalar context). The default list contains ``find'', ``get_set_on_save'', and ``add_on_save''.


OBJECT METHODS

build_method_name_for_type TYPE
Return a method name for the relationship method type TYPE.

For the method types ``get_set'', ``get_set_now'', and ``get_set_on_save'', the relationship's name is returned.

For the method types ``add_now'' and ``add_on_save'', the relationship's name prefixed with ``add_'' is returned.

For the method type ``find'', the relationship's name prefixed with ``find_'' is returned.

For the method type ``count'', the relationship's name suffixed with ``_count'' is returned.

Otherwise, undef is returned.

manager_class [CLASS]
Get or set the name of the the Rose::DB::Object::Manager manpage-derived class used to fetch objects. The make_methods method will use the Rose::DB::Object::Manager manpage if this value is left undefined.

manager_method [METHOD]
Get or set the name of the manager_class class method to call when fetching objects. The make_methods method will use get_objects if this value is left undefined.

manager_args [HASHREF]
Get or set a reference to a hash of name/value arguments to pass to the manager_method when fetching objects. For example, this can be used to enforce a particular sort order for objects fetched via this relationship. For example:

  Product->meta->add_relationship

  (

    code_names =>

    {

      type         => 'one to many',

      class        => 'CodeName',

      column_map   => { id => 'product_id' },

      manager_args => 

      {

        sort_by => CodeName->meta->table . '.name',

      },

    },

  );

This would ensure that a Product's code_names() are listed in alphabetical order. Note that the ``name'' column is prefixed by the name of the table fronted by the CodeName class. This is important because several tables may have a column named ``name.'' If this relationship is used to form a JOIN in a query along with one of those tables, then the ``name'' column will be ambiguous. Adding a table name prefix disambiguates the column name.

Also note that the table name is not hard-coded. Instead, it is fetched from the the Rose::DB::Object manpage-derived class that fronts the table. This is more verbose, but is a much better choice than including the literal table name when it comes to long-term maintenance of the code.

See the documentation for the Rose::DB::Object::Manager manpage's get_objects method for a full list of valid arguments for use with the manager_args parameter, but remember that you can define your own custom manager_class and thus can also define what kinds of arguments manager_args will accept.

map_column LOCAL [, FOREIGN]
If passed a local column name LOCAL, return the corresponding column name in the foreign table. If passed both a local column name LOCAL and a foreign column name FOREIGN, set the local/foreign mapping and return the foreign column name.

column_map [HASH | HASHREF]
Get or set a reference to a hash that maps local column names to foreign column names.

query_args [ARRAYREF]
Get or set a reference to an array of query arguments to add to the query passed to the manager_method when fetching objects.

type
Returns ``one to many''.


AUTHOR

John C. Siracusa (siracusa@gmail.com)


COPYRIGHT

Copyright (c) 2007 by John C. Siracusa. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

Programminig
Wy
Wy
yW
Wy
Programming
Wy
Wy
Wy
Wy