Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DBIx::Class::InflateCoUser(Contributed Perl DocumDBIx::Class::InflateColumn(3)

NAME
       DBIx::Class::InflateColumn - Automatically create references from
       column data

SYNOPSIS
	 # In your table classes
	 __PACKAGE__->inflate_column('column_name', {
	   inflate => sub {
	     my	($raw_value_from_db, $result_object) = @_;
	     ...
	   },
	   deflate => sub {
	     my	($inflated_value_from_user, $result_object) = @_;
	     ...
	   },
	 });

DESCRIPTION
       This component translates column	data into references, i.e. "inflating"
       the column data.	It also	"deflates" references into an appropriate
       format for the database.

       It can be used, for example, to automatically convert to	and from
       DateTime	objects	for your date and time fields. There's a convenience
       component to actually do	that though, try
       DBIx::Class::InflateColumn::DateTime.

       It will handle all types	of references except scalar references.	It
       will not	handle scalar values, these are	ignored	and thus passed
       through to SQL::Abstract. This is to allow setting raw values to	"just
       work". Scalar references	are passed through to the database to deal
       with, to	allow such settings as " \'year	+ 1'" and " \'DEFAULT' " to
       work.

       If you want to filter plain scalar values and replace them with
       something else, see DBIx::Class::FilterColumn.

METHODS
   inflate_column
       Instruct	DBIx::Class to inflate the given column.

       In addition to the column name, you must	provide	"inflate" and
       "deflate" methods. The "inflate"	method is called when you access the
       field, while the	"deflate" method is called when	the field needs	to
       used by the database.

       For example, if you have	a table	"events" with a	timestamp field	named
       "insert_time", you could	inflate	the column in the corresponding	table
       class using something like:

	   __PACKAGE__->inflate_column('insert_time', {
	       inflate => sub {
		 my ($insert_time_raw_value, $event_result_object) = @_;
		 DateTime->from_epoch( epoch =>	$insert_time_raw_value );
	       },
	       deflate => sub {
		 my ($insert_time_dt_object, $event_result_object) = @_;
		 $insert_time_dt_object->epoch;
	       },
	   });

       The coderefs you	set for	inflate	and deflate are	called with two
       parameters, the first is	the value of the column	to be
       inflated/deflated, the second is	the result object itself.

       In this example,	calls to an event's "insert_time" accessor return a
       DateTime	object.	This DateTime object is	later "deflated" back to the
       integer epoch representation when used in the database layer.  For a
       much more thorough handling of the above	example, please	see
       DBIx::Class::DateTime::Epoch

   get_inflated_column
	 my $val = $obj->get_inflated_column($col);

       Fetch a column value in its inflated state.  This is directly analogous
       to "get_column" in DBIx::Class::Row in that it only fetches a column
       already retrieved from the database, and	then inflates it.  Throws an
       exception if the	column requested is not	an inflated column.

   set_inflated_column
	 my $copy = $obj->set_inflated_column($col => $val);

       Sets a column value from	an inflated value.  This is directly analogous
       to "set_column" in DBIx::Class::Row.

   store_inflated_column
	 my $copy = $obj->store_inflated_column($col =>	$val);

       Sets a column value from	an inflated value without marking the column
       as dirty. This is directly analogous to "store_column" in
       DBIx::Class::Row.

SEE ALSO
       DBIx::Class::Core - This	component is loaded as part of the "core"
       DBIx::Class components; generally there is no need to load it directly

FURTHER	QUESTIONS?
       Check the list of additional DBIC resources.

COPYRIGHT AND LICENSE
       This module is free software copyright by the DBIx::Class (DBIC)
       authors.	You can	redistribute it	and/or modify it under the same	terms
       as the DBIx::Class library.

perl v5.24.1			  2016-06-20	 DBIx::Class::InflateColumn(3)

NAME | SYNOPSIS | DESCRIPTION | METHODS | SEE ALSO | FURTHER QUESTIONS? | COPYRIGHT AND LICENSE

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=DBIx::Class::InflateColumn&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help