---
name: "Jifty::DBI::Filter"
section: "3pm"
platform: "linux"
package: "libjifty-dbi-perl"
version: "0.78-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Jifty::DBI::Filter"
---

# Jifty::DBI::Filter(3pm)

base class for Jifty::DBI filters

## NAME

Jifty::DBI::Filter - base class for Jifty::DBI filters

## SYNOPSIS

```
  # To implement your own filter
  package MyApp::Filter::Uppercase;
  use base qw/ Jifty::DBI::Filter /;
  # Setup for DB storage, store in lowercase
  sub encode {
      my $self = shift;
      my $value_ref = $self->value_ref;
      return unless defined $$value_ref; # don't blow up on undef
      $$value_ref = lc $$value_ref;
  }
  # Setup for Perl code to use, always sees uppercase
  sub decode {
      my $self = shift;
      my $value_ref = $self->value_ref;
      return unless defined $$value_ref; # don't blow up on undef
      $$value_ref = uc $$value_ref;
  }
  # To use a filter
  use MyApp::Record schema {
      column filtered =>
          type is 'text',
          filters are qw/ MyApp::Filter::Uppercase /;
  };
```

## DESCRIPTION

A filter allows Jifty::DBI models to tweak data prior to being stored and/or loaded. This is useful for marshalling and unmarshalling complex objects.

## METHODS

### new

Takes three arguments in a parameter hash:

- value\_ref

  A reference to the current value you're going to be massaging. `"encode"` works in place, massaging whatever value\_ref refers to.

- column

  A Jifty::DBI::Column object, whatever sort of column we're working with here.

- handle

  A Jifty::DBI::Handle object, because some filters (i.e. Jifty::DBI::Filter::Boolean) depend on what database system is being used.

### encode

`"encode"` takes data that users are handing to us and marshals it into a form suitable for sticking it in the database. This could be anything from flattening a DateTime object into an ISO date to making sure that data is utf8 clean.

### decode

`"decode"` takes data that the database is handing back to us and gets it into a form that's OK to hand back to the user. This could be anything from inflating an ISO date to a DateTime object to making sure that the string properly has the utf8 flag.

## SEE ALSO

Jifty::DBI::Filter::Date, Jifty::DBI::Filter::DateTime, Jifty::DBI::Filter:SaltHash, Jifty::DBI::Filter::Storable, Jifty::DBI::Filter::Time, Jifty::DBI::Filter::Truncate, Jifty::DBI::Filter::YAML, Jifty::DBI::Filter::base64, Jifty::DBI::Filter::utf8

## LICENSE

Jifty::DBI is Copyright 2005-2007 Best Practical Solutions, LLC. Jifty::DBI is distributed under the same terms as Perl itself.
