[Dbix-class] Extended JOIN syntax
Bernhard Graf
dbic4 at augensalat.de
Sun Jan 29 19:42:15 GMT 2012
I have just learned, that the JOIN syntax was improved recently, so it
is possible to specify more than just the equality of column values, as
shown in the example from DBIx::Class::Relationship::Base:
My::Schema::Artist->has_many(
cds_80s => 'My::Schema::CD',
sub {
my $args = shift;
return {
"$args->{foreign_alias}.artist" => { -ident =>
"$args->{self_alias}.artistid" },
"$args->{foreign_alias}.year" => { '>', "1979", '<', "1990" },
};
}
);
...
$artist_rs->search_related('cds_80s')->next;
The example above still requires the bind values to be defined
statically in the schema. I couldn't find any examples, about how to
specify bind values at execution time - e.g. likes this:
My::Schema::Artist->has_many(
cds_era => 'My::Schema::CD',
sub {
my $args = shift;
return {
"$args->{foreign_alias}.artist" => { -ident =>
"$args->{self_alias}.artistid" },
"$args->{foreign_alias}.year" => { '>', \'?', '<', \'?' },
};
}
);
...
$artist_rs->search_related('cds_era', {}, {bind => ['1979', '1990'])->next;
Isn't something like this possible?
Bernhard
More information about the DBIx-Class
mailing list