[Dbix-class] Fwd: [Catalyst] Selecting from more tables (DBIC- bug?)

Octavian Rasnita octavian at fcc.ro
Tue Jan 19 17:22:53 GMT 2010


From: "Ronald J Kimball" <rkimball+dbixclass at pangeamedia.com>
> Thomas L. Shinnick wrote:
>
>> I'm having some of the same questions regarding +select and +as .  It
>> seems that using '+select' and '+as' does not stop other columns from
>> being returned.  I'm using DBIC 0.08115.
>
> What do you expect +select and +as to do??
>
> +select
>
>     Indicates additional columns to be selected from storage. Works
>     the same as "select" but adds columns to the selection.
>
> +as
>
>     Indicates additional column names for those added via "+select".
>     See "as".
>
> +select and +as are behaving exactly as documented.  If you want to select 
> /only/ the specified columns use select and as, not +select and +as.
>
> Ronald


Hi Ronald,

I am not sure my message will reach the list, because it rejects my messages 
as spam, but here is a short test I made:

$ENV{DBIC_TRACE}++;
use BRK::Schema;

my $schema = BRK::Schema->connect("dbi:mysql:database=brk", "root");

my $uuu = $schema->resultset('User')->search({},{
prefetch => {blogs => 'blog_comments'},
select => ['me.id'],
as => ['user_id'],
});

print $uuu->first->username;

I think the single column that should be printed should be me.id, but here 
is the generated SQL:

SELECT me.id, blogs.id, blogs.user, blogs.date_create, blogs.date_modify, 
blogs.title, blogs.body, blogs.markup_lang, blogs.tags, blogs.active, 
blog_comments.id, blog_comments.user, blog_comments.blog, 
blog_comments.date_time, blog_comments.body, blog_comments.markup_lang, 
blog_comments.active FROM user me LEFT JOIN blog blogs ON blogs.user = me.id 
LEFT JOIN blog_comment blog_comments ON blog_comments.blog = blogs.id ORDER 
BY blogs.user, blog_comments.blog:

Is it normal to get all the columns from the joined tables?

Thank you.

Octavian




More information about the DBIx-Class mailing list