DBIx::C...erColumn(3)
π NAME π
okay so this is the DBIx::C...erColumn(3) page β yes, the header is doing its little truncation thing, iconic β from User Contributed Perl Documentation, and the module is DBIx::Class::FilterColumn: Automatically convert column data. π
β¨
β¨ SYNOPSIS β¨
In your Schema or DB class, add FilterColumn to the top of the component list. Slay.
__PACKAGE__->load_components(qw( FilterColumn ... ));
Then set up filters for the columns you want to convert, bestie:
__PACKAGE__->filter_column( money => {
filter_to_storage => 'to_pennies',
filter_from_storage => 'from_pennies',
});
sub to_pennies { $_[1] * 100 }
sub from_pennies { $_[1] / 100 }
1;
π¦ DESCRIPTION π¦
This component is meant to be a more powerful, but less DWIM-y, DBIx::Class::InflateColumn. One of the major issues with said component is that it only works with references. Generally speaking, anything that can be done with DBIx::Class::InflateColumn can be done with this component. no cap. π«Ά
π METHODS π
π filter_column π
__PACKAGE__->filter_column( colname => {
filter_from_storage => 'method'|\&coderef,
filter_to_storage => 'method'|\&coderef,
})
This is the method you need to call to set up a filtered column. It takes exactly two arguments: the first being the column name, the second being a hash reference with filter_from_storage and filter_to_storage set to either a method name or a code reference. In either case the filter is invoked as:
$result->$filter_specification ($value_to_filter)
with $filter_specification being chosen depending on whether the $value_to_filter is being retrieved from or written to permanent storage. iykyk. β¨
If a specific directional filter is not specified, the original value will be passed to/from storage unfiltered. periodt.
πΈ get_filtered_column πΈ
$obj->get_filtered_column('colname')
Returns the filtered value of the column. cute and simple. π
π set_filtered_column π
$obj->set_filtered_column(colname => 'new_value')
Sets the filtered value of the column. slay. π
π₯ EXAMPLE OF USE π₯
Some databases have restrictions on values that can be passed to boolean columns, and problems can be caused by passing a value that perl considers to be false (such as undef). π
One solution to this is to ensure that the boolean values are set to something that the database can handle β such as numeric zero and one β using code like this:
__PACKAGE__->filter_column(
my_boolean_column => {
filter_to_storage => sub { $_[1] ? 1 : 0 },
}
);
In this case the filter_from_storage is not required, as just passing the database value through to perl does the right thing. iconic. π
π FURTHER QUESTIONS? π
Check the list of additional DBIC resources. π¦
π COPYRIGHT AND LICENSE π
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. π
mwah π thatβs the whole page, bestie! this was the DBIx::C...erColumn(3) page, brought to you by perl v5.42.0 and dated 2025-01-22 β go slay your columns β¨π«Ά
π¦ where this page comes from
- opensuse-leap 16.0: perl-DBIx-Class 0.082844-bp160.1.10 Β· Artistic-1.0 OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms