X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=dbsrgits%2FDBIx-Class.git;a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRelationship.pm;h=3a2310852523a11e6269a9a818e7f8c88e985f7e;hp=54fda9153728584e2e1a972d8acbb52accb433e5;hb=2c3ad870fd6a88f5824d4b2c5a63f87c2af1c005;hpb=2b19c829f8965559e12413149147ce6693e7f186 diff --git a/lib/DBIx/Class/Relationship.pm b/lib/DBIx/Class/Relationship.pm index 54fda91..3a23108 100644 --- a/lib/DBIx/Class/Relationship.pm +++ b/lib/DBIx/Class/Relationship.pm @@ -118,6 +118,19 @@ instead of a join condition hash, that is used as the name of the column holding the foreign key. If $cond is not given, the relname is used as the column name. +If the relationship is optional - ie the column containing the foreign +key can be NULL - then the belongs_to relationship does the right +thing - so in the example above C<$obj->author> would return C. +However in this case you would probably want to set the C +attribute so that a C is done, which makes complex +resultsets involving C or C operations work correctly. +The modified declaration is shown below:- + + # in a Book class (where Author has many Books) + __PACKAGE__->belongs_to(author => 'My::DBIC::Schema::Author', + 'author', {join_type => 'left'}); + + Cascading deletes are off per default on a C relationship, to turn them on, pass C<< cascade_delete => 1 >> in the $attr hashref.