[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