[Dbix-class] Could not load Schema Class (Billing::Schema). DBIx::Class::ResultSource::add_relationship(): Malformed relationship condition value '': must be prefixed with 'self.'
Daniel Böhmer
post at daniel-boehmer.de
Tue Jan 26 23:06:47 GMT 2021
Hello Alex,
the simple hashref-type defintion expects a pair of column names.
I did the same thing using the coderef-type definition. For an example
see
https://github.com/dboehmer/coocook/blob/c9b3503f3df44a6817c5402225913815849e4aaa/lib/Coocook/Schema/Result/Unit.pm#L38
Beware that with a coderef you cannot simply write the name of
the column to be equal but now you actually need to say the
column should be equal to the value of a given column (-ident).
You'll need something like this:
sub {
my $args = shift;
return {
"$args->{foreign_alias}.agreement" => { -ident =>
"$args->{self_alias}.id" },
"$args->{foreign_alias}.bill" => undef,
};
}
Does that work?
Kind regards
Daniel
On 2021-01-26 22:53, Александр Поволоцкий wrote:
> Hello
>
> I'm trying to make left join with extra condition
>
> agreements a left join bill_mails bm on a.id = bm.agreement and
> bm.bill is null
>
> However,
>
> { "foreign.agreement" => "self.id",
> "foreign.bill" => undef
> },
>
> yields error
>
> Could not load Schema Class (Billing::Schema).
> DBIx::Class::ResultSource::add_relationship(): Malformed relationship
> condition value '': must be prefixed with 'self.'
>
> Is it possible to make such a clause without extra view?
>
> ---
>
> Alex
>
>
> _______________________________________________
> List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
> IRC: irc.perl.org#dbix-class
> SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
> Searchable Archive:
> http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk
More information about the DBIx-Class
mailing list