Man pages sections > man3 > DBIx::Class::Helper::Row::StorageValues

DBIx::Class::Helper::Row::StorageValues - Keep track of stored vs in-memory row

DBIx::Class::Helper::Row::StorageValues(3pm) User Contributed Perl Documentation DBIx::Class::Helper::Row::StorageValues(3pm)

NAME

DBIx::Class::Helper::Row::StorageValues - Keep track of stored vs in-memory row values

SYNOPSIS

 package MyApp::Schema::Result::BlogPost;
 use parent 'DBIx::Class::Core';
 __PACKAGE__->load_components(qw(Helper::Row::StorageValues));
 __PACKAGE__->table('BlogPost');
 __PACKAGE__->add_columns(
    id => {
       data_type         => 'integer',
       is_auto_increment => 1,
    },
    title => {
       data_type          => 'varchar',
       length             => 32,
       keep_storage_value => 1,
    },
    body => {
       data_type => 'text',
    },
 );
 1;
 # elsewhere:
 my $post = $blog_rs->create({
   title => 'Components for fun and profit',
   body  => '...',
 });
 $post->title('Components for fun');
 warn sprintf 'Changing title from %s to %s',
   $post->storage_value('title'), $post->title;
 $post->update;

DESCRIPTION

This component keeps track of the value for a given column in the database. If you change the column's value and do not call "update", the "storage_value" will be different; once "update" is called the "storage_value" will be set to the value of the accessor. Note that the fact that it uses the accessor is an important distinction. If you are using DBIx::Class::FilterColumn or DBIx::Class::InflateColumn it will get the non-storage or inflated values, respectively.

METHODS

_has_storage_value

 $self->_has_storage_value('colname')
returns true if we should store the storage value from the database. Override this if you'd like to enable storage on all integers or something like that:
 sub _has_storage_value {
    my ( $self, $column ) = @_;
    my $info = $self->column_info($column);
    return defined $info->{data_type} && $info->{data_type} eq 'integer';
 }

storage_value_columns

 $self->storage_value_columns
returns a list of columns to store

get_storage_value

 $self->get_storage_value('colname')
returns the value for that column which is in storage

AUTHOR

Arthur Axel "fREW" Schmidt <frioux+cpan@gmail.com> This software is copyright (c) 2017 by Arthur Axel "fREW" Schmidt.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
2017-07-03 perl v5.24.1