DBIx::Class::Row(3p)

NAME
DBIx::Class::Row - Basic row methods

SYNOPSIS

DESCRIPTION
This class is responsible for defining and doing basic operations on rows derived from DBIx::Class::ResultSource objects.

METHODS

  new
  my $obj = My::Class->new($attrs);

Creates a new row object from column => value mappings passed as a hash ref

Passing an object, or an arrayref of objects as a value will call "set_from_related" in DBIx::Class::Relationship::Base for you. When passed a hashref or an arrayref of hashrefs as the value, these will be turned into objects via new_related, and treated as if you had passed objects.

For a more involved explanation, see "create" in DBIx::Class::ResultSet.

  insert
  $obj->insert;

Inserts an object into the database if it isn't already in there. Returns the object itself. Requires the object's result source to be set, or the class to have a result_source_instance method. To insert an entirely new object into the database, use "create" (see "create" in DBIx::Class::ResultSet).

This will also insert any uninserted, related objects held inside this one, see "create" in DBIx::Class::ResultSet for more details.

  in_storage
  $obj->in_storage; # Get value
  $obj->in_storage(1); # Set value

Indicates whether the object exists as a row in the database or not

  update
  $obj->update \%columns?;

Must be run on an object that is already in the database; issues an SQL UPDATE query to commit any changes to the object to the database if required.

Also takes an options hashref of "column_name => value> pairs" to update first. But be aware that this hashref might be edited in place, so dont rely on it being the same after a call to "update". If you need to preserve the hashref, it is sufficient to pass a shallow copy to "update", e.g. ( { %{ $href } } )

  delete
  $obj->delete

Deletes the object from the database. The object is still perfectly usable, but "->in_storage()" will now return 0 and the object must reinserted using "->insert()" before "->update()" can be used on it. If you delete an object in a class with a "has_many" relationship, all the related objects will be deleted as well. To turn this behavior off, pass "cascade_delete =" 0> in the $attr hashref. Any database-level cascade or restrict will take precedence over a DBIx-Class-based cascading delete. See also "delete" in DBIx::Class::ResultSet.

  get_column
  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.

  has_column_loaded
  if ( $obj->has_column_loaded($col) ) {
     print "$col has been loaded from db";
  }

Returns a true value if the column value has been loaded from the database (or set locally).

  get_columns
  my %data = $obj->get_columns;

Does "get_column", for all column values at once.

  get_dirty_columns
  my %data = $obj->get_dirty_columns;

Identical to get_columns but only returns those that have been changed.

  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.

  set_column
  $obj->set_column($col => $val);

Sets a 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.

  set_columns
  my $copy = $orig->set_columns({ $col => $val, ... });

Sets more than one column value at once.

  copy
  my $copy = $orig->copy({ change => $to, ... });

Inserts a new row with the specified changes.

  store_column
  $obj->store_column($col => $val);

Sets a column value without marking it as dirty.

  inflate_result
  Class->inflate_result($result_source, \%me, \%prefetch?)

Called by ResultSet to inflate a result from storage

  update_or_insert
  $obj->update_or_insert

Updates the object if it's already in the db, else inserts it.

  insert_or_update
  $obj->insert_or_update

Alias for "update_or_insert"

  is_changed
  my @changed_col_names = $obj->is_changed();
  if ($obj->is_changed()) { ... }

In array context returns a list of columns with uncommited changes, or in scalar context returns a true value if there are uncommitted changes.

  is_column_changed
  if ($obj->is_column_changed('col')) { ... }

Returns a true value if the column has uncommitted changes.

  result_source
  my $resultsource = $object->result_source;

Accessor to the ResultSource this object was created from

  register_column
  $column_info = { .... };
  $class->register_column($column_name, $column_info);

Registers a column on the class. If the column_info has an 'accessor' key, creates an accessor named after the value if defined; if there is no such key, creates an accessor with the same name as the column

The column_info attributes are described in "add_columns" in DBIx::Class::ResultSource

  throw_exception
See Schema's throw_exception.

AUTHORS
Matt S. Trout <mst@shadowcatsystems.co.uk>

LICENSE
You may distribute this code under the same terms as Perl itself.