---
name: "DBIx::Class::Helper::Row::StorageValues"
section: "3pm"
platform: "linux"
package: "libdbix-class-helpers-perl"
version: "2.037000-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/DBIx::Class::Helper::Row::StorageValues"
---

# DBIx::Class::Helper::Row::StorageValues(3pm)

Keep track of stored vs in-memory row values

## 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\>

## COPYRIGHT AND LICENSE

This software is copyright (c) 2024 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.
