[Dbix-class] problem on incorrect pager result
James. L
perlwle at yahoo.com
Fri Jul 11 11:41:33 BST 2008
hi, all
i am having a problem getting incorrect pager result - wrong total_entries in the following example.
package MyApp::Schema::UserPost;
sub posts_rs {
my $rs = shift;
$rs->search( {},
{ prefetch => { "post" => { "tags" => "tag" } },
order_by => [qw/ post.created / ],
# distinct => 1,
});
return $rs;
}
% perl -MMyApp -MData::Dumper -le '$rs=MyApp->schema("UserPost")->posts_rs; print Dumper $rs->pager'
$VAR1 = bless( {
'total_entries' => '3',
'current_page' => 1,
'entries_per_page' => 10
}, 'Data::Page' );
% perl -MMyApp -MData::Dumper -le '@rs=MyApp->ds("UserPost")->posts_rs->all; print scalar @rs'
2
as you can see the total_entries is 3. however, the total number of posts is really 2. i think the wrong total_entries is due to the has_many relationship between 'Post' to 'Tag'. in this case, there are total 2 posts and one post has two tags and the other post has only 1 tag. FYI, here is the relationships defined in UserPost.pm
# relationships in UserPost.pm
__PACKAGE__->has_many('tags','MyApp::Schema::Result::UserTagPost','post_id');
__PACKAGE__->has_one('category','MyApp::Schema::Result::UserCategoryPost','category_id');
I have also looked at DISTINCT attr but i am stuck with an error:
"Operand should contain 1 column(s)"
how do i fix it?
thanks,
Qiang
More information about the DBIx-Class
mailing list