DBIx::C...eColumn(3)

🌸 NAME 🌸

okay so this is the DBIx::Class::InflateColumn manual page β€” from User Contributed Perl Documentation, and the header/footer abbreviate it as DBIx::C...eColumn(3). Its whole vibe? Automatically create references from column data. πŸ’…

✨ SYNOPSIS ✨

slap this in your table classes, bestie:

         # 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. ✨

Like, you can use it to automatically convert to and from DateTime objects for your date and time fields β€” but there's a convenience component to actually do that, so try DBIx::Class::InflateColumn::DateTime. πŸŽ€

It handles all types of references except scalar references. It does not handle scalar values β€” those get ignored and thus passed through to SQL::Abstract::Classic. This is so setting raw values can just work. Scalar references are passed through to the database to deal with, so settings like \'year + 1' and \'DEFAULT' can work. 🫢

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

🧚 METHODS 🧚

πŸ’… inflate_column

Instructs 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 be 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, and 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. 🫢

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. 🌈


okay bestie, that's the whole page β€” this was DBIx::C...eColumn(3) from perl v5.42.0, dated 2025-01-22. mwah πŸ’‹βœ¨

πŸ“¦ where this page comes from