X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FRow.pm;h=d2def31b63e6a6bcda8db3dc5c4d48da37d74ef8;hb=67109394df87744b666feacaa8e5bca58a25809b;hp=279e508adff78636657c1f409412385715d4db72;hpb=299d8683826c74c030d6657ab4f21d95a711c228;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Row.pm b/lib/DBIx/Class/Row.pm index 279e508..d2def31 100644 --- a/lib/DBIx/Class/Row.pm +++ b/lib/DBIx/Class/Row.pm @@ -140,6 +140,9 @@ be set, or the class to have a result_source_instance method. To insert an entirely new object into the database, use C (see L). +To fetch an uninserted row object, call +L on a resultset. + This will also insert any uninserted, related objects held inside this one, see L for more details. @@ -206,7 +209,8 @@ sub insert { } } - $source->storage->insert($source, { $self->get_columns }); + my $updated_cols = $source->storage->insert($source, { $self->get_columns }); + $self->set_columns($updated_cols); ## PK::Auto my @auto_pri = grep { @@ -261,7 +265,13 @@ sub insert { $obj->in_storage; # Get value $obj->in_storage(1); # Set value -Indicates whether the object exists as a row in the database or not +Indicates whether the object exists as a row in the database or +not. This is set to true when L, +L or L +are used. + +Creating a row object using L, or calling +L on one, sets it to false. =cut @@ -355,10 +365,11 @@ sub delete { my $val = $obj->get_column($col); -Gets a column value from a row object. Does not do any queries; the column -must have already been fetched from the database and stored in the object. If -there is an inflated value stored that has not yet been deflated, it is deflated -when the method is invoked. +Returns a raw column value from the row object, if it has already +been fetched from the database or set by an accessor. + +If an L has been set, it +will be deflated and returned. =cut @@ -396,7 +407,7 @@ sub has_column_loaded { my %data = $obj->get_columns; -Does C, for all column values at once. +Does C, for all loaded column values at once. =cut @@ -427,9 +438,10 @@ sub get_dirty_columns { =head2 get_inflated_columns - my $inflated_data = $obj->get_inflated_columns; + my %inflated_data = $obj->get_inflated_columns; -Similar to get_columns but objects are returned for inflated columns instead of their raw non-inflated values. +Similar to get_columns but objects are returned for inflated columns +instead of their raw non-inflated values. =cut @@ -445,9 +457,13 @@ sub get_inflated_columns { $obj->set_column($col => $val); -Sets a column value. If the new value is different from the old one, +Sets a raw column value. If the new value is different from the old one, the column is marked as dirty for when you next call $obj->update. +If passed an object or reference, this will happily attempt store the +value, and a later insert/update will try and stringify/numify as +appropriate. + =cut sub set_column { @@ -531,7 +547,9 @@ sub set_inflated_columns { my $copy = $orig->copy({ change => $to, ... }); -Inserts a new row with the specified changes. +Inserts a new row with the specified changes. If the row has related +objects in a C then those objects may be copied too depending +on the C relationship attribute. =cut @@ -665,7 +683,8 @@ sub inflate_result { $obj->update_or_insert -Updates the object if it's already in the db, else inserts it. +Updates the object if it's already in the database, according to +L, else inserts it. =head2 insert_or_update