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 <[email protected]>COPYRIGHT AND LICENSE
This software is copyright (c) 2015 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.