The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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;