[Dbix-class] Searching based on a Result Class Method

Hetényi Csaba csabiwork at tata.hu
Tue Apr 6 09:11:22 GMT 2010


Thank You Rob for help.
Now it is working (but a little changed clause statement because of 
Postgresql)

I run into another basic problem, that i can't solve.

I have two table:

1. Users : holds user informations, (and 'id' as primary key)
2. Photos : holds user pictures definitions, joined to Users table with 
column: user_id	(one user may have many photos)

I created a has_many relationship in Users resultset, and this way
i can get the count of photos for every user via : $self->photos->count;

Cut from Users resultset file with relevant sections:

> package Tarsv1::Schema::Result::Users;
> 
> use strict;
> use warnings;
> 
> use base 'DBIx::Class';
> 
> __PACKAGE__->load_components("InflateColumn::DateTime", "TimeStamp", "EncodedColumn", "Core");
> __PACKAGE__->table("users");
> __PACKAGE__->add_columns(
>   "id",
>   {
>     data_type => "integer",
>     default_value => "nextval('users_id_seq'::regclass)",
>     is_nullable => 0,
>     size => 4,
>   },
> .
> .
> .
> __PACKAGE__->set_primary_key("id");
> 
> __PACKAGE__->has_many(photos => 'Tarsv1::Schema::Result::Photos', user_id');


The other: Photos table resultset file with relvant sections:

> package Tarsv1::Schema::Result::Photos;
> 
> use strict;
> use warnings;
> 
> use base 'DBIx::Class';
> 
> __PACKAGE__->load_components("InflateColumn::DateTime", "TimeStamp", "EncodedColumn", "Core");
> __PACKAGE__->table("photos");
> __PACKAGE__->add_columns(
>   "id",
>   {
>     data_type => "integer",
>     default_value => "nextval('photos_id_seq'::regclass)",
>     is_nullable => 0,
>     size => 4,
>   },
>   "user_id",
>   { data_type => "integer", default_value => 0, is_nullable => 0, size => 4 },



How can i create a clause/resultset to get only that users, which has
a photo?

In normal sql it is very sipmle:

SELECT * FROM users u,photos p WHERE u.id = p.user_id;


Sorry for long and very beginner question.
Thank You in advance!
Csabi





More information about the DBIx-Class mailing list