Class::DBI::Cascade::None.3pm

Langue: en

Version: 2005-09-14 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

Class::DBI::Cascade::None - Do nothing upon deletion

DESCRIPTION

This is a Cascading Delete strategy that will do nothing, leaving orphaned records behind.

It is the base class for most ofther Cascade strategies, and so provides several important methods:

CONSTRUCTOR

new

         my $strategy = Cascade::Class->new($Relationship);
 
 

This must be instantiated with a Class::DBI::Relationship object.

METHODS

foreign_for

         my $iterator = $strategy->foreign_for($obj);
 
 

This will return all the objects which are foreign to $obj across the relationship. It's a normal Class::DBI search you can get the results either as a list or as an iterator.

cascade

         $strategy->cascade($obj);
 
 

Cascade across the related objects to $obj.

WRITING NEW STRATEGIES

Creating a Cascade strategy should be fairly simple. You usually just need to inherit from here, and then supply a cascade() method that does the required thing with the results from foreign_for().

So, for example, Cascade::Delete is implemented simply as:

         package Class::DBI::Cascade::Delete;
 
         use base 'Class::DBI::Cascade::None';
 
         sub cascade {
                 my ($self, $obj) = @_;
                 $self->foreign_for($obj)->delete_all;
         }