Class-DBI-Frozen-301
    
    
  
  
  
view release on metacpan or search on metacpan
      off caching if required) [gfalck]
    - We now warn about column names clashing with any inherited methods,
      not just ones defined in Class::DBI itself [Dan Thill]
    - Silence some test warnings reported by Paul Makepeace
0.94  Wed Aug 27 2003
  New Functionality
    - allow has_a() columns to hold NULL values (Dominic Mitchell)
    - cascading deletions can be turned off by passing argument to
      has_many setup: no_cascade_delete => 1 (undocumented/untested)
      [now implemented as a trigger]
    - classes and objects can be marked as read_only (experimental and
      undocumented, although tested)
  Documentation
    - no longer refer to Class::DBI::Join, which is dead
    - warn about inflating a primary key using has_a
    - rewrite of docs on transactions
    - numerous small tweaks from Jay Strauss, Alexander Karelas and Brad
      Bowman
    
  
  
  
0.34  Sat Oct  6 2001
    - Don't die if a value is a reference. (Ima::DBI does this for us,
       and better in case of overloaded objects)
    - fix minor problem with mutual hasa / hasa_list referencing
    - better diagnostics if hasa_list is miscalled
0.33  Sat Sep 15 2001
    + Added create_filter(), and with it retrieve_all()
    + added docs on how to set-up many-to-many relationships
    + _cascade delete now split out to allow overriding
    + copy() and move() can now take multiple arguments to change
       (thanks to Jonathan Swartz)
0.32  Sun Sep  9 2001
    + delete() now removes any foreign elements, to avoid orphans
0.31  Sun Sep  9 2001
    + split out _column_placeholder (thanks to Jonathan Swartz)
    + added hasa() checks for orphaned rows
    
  
  
  lib/Class/DBI/Frozen/301/Relationship/HasMany.pm view on Meta::CPAN
sub _set_up_class_data {
	my $self = shift;
	$self->class->_extend_class_data(
		__hasa_list => $self->foreign_class => $self->args->{foreign_key});
	$self->SUPER::_set_up_class_data;
}
sub triggers {
	my $self = shift;
	return if $self->args->{no_cascade_delete};    # undocumented and untestsd!
	return (
		before_delete => sub {
			$self->foreign_class->search($self->args->{foreign_key} => shift->id)
				->delete_all;
		});
}
sub methods {
	my $self     = shift;
	my $accessor = $self->accessor;
    
  
  
  t/10-mysql.t view on Meta::CPAN
	ok MyStar->has_many(filmids => [ MyStarLink => 'film', 'id' ]),
		"**** Multi-map";
	my @filmid = $s1->filmids;
	ok !ref $filmid[0], "Film-id is not a reference";
	my $first = $s1->filmids->first;
	ok !ref $first, "First is not a reference";
	is $first, $filmid[0], "But it's the same as filmid[0]";
}
{    # cascades correctly
	my $lenin  = MyFilm->create({ title    => "Leningrad Cowboys Go America" });
	my $pimme  = MyStar->create({ name     => "Pimme Korhonen" });
	my $cowboy = MyStarLink->create({ film => $lenin, star => $pimme });
	$lenin->delete;
	is MyStar->search(name => 'Pimme Korhonen')->count, 1, "Pimme still exists";
	is MyStarLink->search(star => $pimme->id)->count, 0, "But in no films";
}
{
	ok MyStar->has_many(filmids_mcpk => [ MyStarLinkMCPK => 'film', 'id' ]),
    
  
  
  t/14-might_have.t view on Meta::CPAN
	is $bt->blurb, $info->blurb, "Blurb is the same as fetching the long way";
	ok $bt->blurb("New blurb"), "We can set the blurb";
	$bt->update;
	is $bt->blurb, $info->blurb, "Blurb has been set";
	$bt->rating(18);
	eval { $bt->update };
	is $@, '', "No problems updating when do have";
	is $bt->rating, 18, "Updated OK";
	# cascade delete?
	{
		my $blurb = Blurb->retrieve('Bad Taste');
		isa_ok $blurb => "Blurb";
		$bt->delete;
		$blurb = Blurb->retrieve('Bad Taste');
		is $blurb, undef, "Blurb has gone";
	}
		
}
    
  
  
  
( run in 0.461 second using v1.01-cache-2.11-cpan-a1d94b6210f )