0

I added new relationship to my Schema in Catalyst project:

__PACKAGE__->has_many(
    'messageslog' => "myproject::Schema::Result::MessagesLog",
    sub {
    my $args = shift;
    return {
        "$args->{foreign_alias}.from" => "$args->{self_alias}.msisdn",
        "$args->{foreign_alias}.service_id" => "3",
        "$args->{foreign_alias}.date_time" => {between => ["2013-01-01 00:00:00", "2013-   01-05 23:59:59"]}
        };
    }
);

When I make request:

$c->model('DB::TableClass')->search({})->hashref_array;

it works perfectly.

But i need to insert search params like this:

__PACKAGE__->has_many(
    'messageslog' => "myproject::Schema::Result::MessagesLog",
    sub {
    my $args = shift;
    return {
        "$args->{foreign_alias}.from" => "$args->{self_alias}.msisdn",
        "$args->{foreign_alias}.service_id" => "$args->{params}->{id}",
        "$args->{foreign_alias}.date_time" => {between => $args->{params}->{dates}}
        };
    }
);
$c->model('DB::TableClass')->search({}, {
    join => 'messageslog',
    -params => {id => 3, dates => ["2013-01-01 00:00:00", "2013-01-05 23:59:59"]}
})->hashref_array;

How can I do this?

Alex_Crack
  • 710
  • 1
  • 4
  • 14

1 Answers1

1

By adding a method to the ResultSet instead of a relationship, see Cookbook/Predefined-searches.

Alexander Hartmaier
  • 2,178
  • 12
  • 21
  • Above relationship is required. I need only put some parameters from search statement to relationship. And I don't know how to do this. Just need to put params hash from search to $args hash in relationship... – Alex_Crack Feb 05 '13 at 20:24