[Dbix-class] Need help with a search query

Dennis Daupert ddaupert at sbcglobal.net
Fri Jun 15 02:42:21 GMT 2012


For some reason the right search query syntax has been elusive.

I'm trying to get a list of people belonging to a particular company
where the company has a particular 'code' value.

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
Sample query code attempt:
------------------------------
sub get_ppl_by_org_code {
=A0 my ( $schema, $code ) =3D @_;
=A0 =

=A0 my $rs =3D $schema->resultset('Person')->search(
=A0=A0=A0 {
=A0=A0=A0=A0=A0 'company.code' =3D> $code,
=A0=A0=A0 },
=A0=A0=A0 {
=A0=A0=A0=A0=A0 join=A0=A0=A0=A0 =3D> [qw/ company /], # also tried people_=
companies
=A0=A0=A0 }
=A0 );
=A0=A0=A0=A0=A0 =

=A0 return( $rs );
}

Gives error: "No such relationship company on Person"
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=A0 =

Schemas: (produced by DBIx::Class::Schema::Loader)
------------------------------
__PACKAGE__->table("people");
__PACKAGE__->add_columns(
=A0 "agent_id",
=A0 { data_type =3D> "integer", is_auto_increment =3D> 1, is_nullable =3D> =
0 },
=A0 "first_name",
=A0 { data_type =3D> "varchar", is_nullable =3D> 1, size =3D> 40 },
=A0 "last_name",
=A0 { data_type =3D> "varchar", is_nullable =3D> 1, size =3D> 40 },
=A0 <snip>
=A0 =

__PACKAGE__->has_many(
=A0 "people_companies",
=A0 "DB::Schema::Result::PeopleCompany",
=A0 { "foreign.agent_id" =3D> "self.agent_id" },
=A0 { cascade_copy =3D> 0, cascade_delete =3D> 0 },
); =

=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
__PACKAGE__->table("group_company_xl");
__PACKAGE__->add_columns(
=A0 "company_id",
=A0 { data_type =3D> "integer", is_auto_increment =3D> 1, is_nullable =3D> =
0 },
=A0 "company",
=A0 { data_type =3D> "varchar", is_nullable =3D> 0, size =3D> 50 },
=A0 "service_center",
=A0 { data_type =3D> "varchar", is_nullable =3D> 1, size =3D> 20 },
=A0 "code",
=A0 { data_type =3D> "varchar", is_nullable =3D> 1, size =3D> 5 },
=A0 <snip>
=A0 =

__PACKAGE__->has_many(
=A0 "people_companies",
=A0 "DB::Schema::Result::PeopleCompany",
=A0 { "foreign.company_id" =3D> "self.company_id" },
=A0 { cascade_copy =3D> 0, cascade_delete =3D> 0 },
);=A0 =


Seems odd, DBIx::Class::Schema::Loader produced accessor
with same name as the one for people table. Is that kosher?
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
__PACKAGE__->table("people_companies");
__PACKAGE__->add_columns(
=A0 "agent_id",
=A0 { data_type =3D> "integer", is_foreign_key =3D> 1, is_nullable =3D> 0 },
=A0 "company_id",
=A0 { data_type =3D> "integer", is_foreign_key =3D> 1, is_nullable =3D> 0 },
);

__PACKAGE__->belongs_to(
=A0 "agent",
=A0 "DB::Schema::Result::Person",
=A0 { agent_id =3D> "agent_id" },
=A0 { is_deferrable =3D> 1, on_delete =3D> "CASCADE", on_update =3D> "CASCA=
DE" },
);

__PACKAGE__->belongs_to(
=A0 "company",
=A0 "DB::Schema::Result::GroupCompanyXl",
=A0 { company_id =3D> "company_id" },
=A0 { is_deferrable =3D> 1, on_delete =3D> "CASCADE", on_update =3D> "CASCA=
DE" },
);
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D

Can someone help me learn the secret handshake?

/dennis

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.scsys.co.uk/pipermail/dbix-class/attachments/20120614/eb7=
7ef19/attachment.htm


More information about the DBIx-Class mailing list