Terrence Brannon

NAME

DBIx::Cookbook::Recipe::Searching::complex_where - fairly complex WHERE clause

DESCRIPTION

Execute the following query:

  SELECT * FROM film 
  WHERE
    (DESCRIPTION LIKE 'drama%' AND title LIKE 'bikini%')
     OR
    title = 'BANG KWAI'

Sample Usage:

  ${orm}_cmd complex_where    # orm = dbic, skinny, rose, etc

RECIPES

DBIx::Class

    package DBIx::Cookbook::DBIC::Command::complex_where;
    use Moose;
    extends qw(MooseX::App::Cmd::Command);
    
    use Data::Dumper;
    
    sub execute {
      my ($self, $opt, $args) = @_;
    
    
     $self->app->schema->storage->debug(1);
    
      my $rs = do {
    
        my $where = 
          {
           -or => [
               -and => [
                        description => { 'like' , '%drama%' },
                        title => { 'like', 'bikini%' }
                       ],
               title => 'BANG KWAI'
              ]
          };
    
        my $attr = { order_by => 'title' };
    
        $self->app->schema->resultset('Film')->search($where, $attr);
    
      };
    
      while (my $row = $rs->next) {
        my %data = $row->get_columns;
        warn Dumper(\%data);
      }
    
    }
    
    1;