NAME
DBIx::Class::Helper::Row::StorageValues - Keep track of stored vs in-memory row values
VERSION
version 2.016005
SYNOPSIS
package
MyApp::Schema::Result::BlogPost;
__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>
COPYRIGHT AND LICENSE
This software is copyright (c) 2013 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.