Can you show us the complete piece of code for the search/output, and the class definitions? That trace looks like you first asked for "Id" only, and then later did another query, or called a relation method on the result .

This code:

my @recs=$self->db->resultset($self->table)->search({},{columns => [qw/ id/ ],},)->all;
foreach my $row (@recs) {
  print $row->Name;
}

Should output undefs (or possibly a warning that you didnt fetch that column, I forget).

Jess

On Wed, 10 Apr 2013 10:25:14 +0100, max <maxt...@gmail.com> wrote:

Ok, sorry, I copied the wrong example, I tried with:

my @recs=$self->db->resultset($self->table)->search({},{columns => [qw/ id
/],},)->all;

but I can see the Name column for example in the foreach loop. After some
debugging on mysql I found some stranges:

67 Query     SELECT me.id FROM ReportTemplates me
67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '124' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '125' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '126' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '127' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '135' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '136' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '146' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '150' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '177' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '184' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '192' ) 67 Query SELECT me.Name FROM ReportTemplates me WHERE ( me.id = '193' )
67 Query     SELECT me.id, me.OperationId, me.Name, me.Description,
me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE (
me.id= '124' )
67 Query     SELECT me.id, me.OperationId, me.Name, me.Description,
me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE (
me.id= '125' )
67 Query     SELECT me.id, me.OperationId, me.Name, me.Description,
me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE (
me.id= '126' )
67 Query     SELECT me.id, me.OperationId, me.Name, me.Description,
me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE (
me.id= '127' )
67 Query     SELECT me.id, me.OperationId, me.Name, me.Description,
me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE (
me.id= '135' )
67 Query     SELECT me.id, me.OperationId, me.Name, me.Description,
me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE (
me.id= '136' )
67 Query     SELECT me.id, me.OperationId, me.Name, me.Description,
me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE (
me.id= '146' )
67 Query     SELECT me.id, me.OperationId, me.Name, me.Description,
me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE (
me.id= '150' )
67 Query     SELECT me.id, me.OperationId, me.Name, me.Description,
me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE (
me.id= '177' )
67 Query     SELECT me.id, me.OperationId, me.Name, me.Description,
me.Content, me.lastLogin, me.prevLogin FROM ReportTemplates me WHERE (
me.id= '184' )

the first query is correct but the others ? I suspect that is not related
with dbix, but why I can see column if I have not specified them ?

thanks

2013/4/10 Peter Rabbitson <rabbit+d...@rabbit.us>

On Tue, Apr 09, 2013 at 03:58:53PM +0200, max wrote:
> Thanks for the answer, this piece of code is inside a perl sub, I tried
to
> extract the array elements as:
>
> foreach my $row (@recs)
> {
> my $id=$row->id;
> my $name=$row->Name;
> print MYFILE "recs name: $name, id: $id\n\n";
> }
>
> and I can see the Name element for example.

Well... you asked for it didn't you? (in fact you asked twice)

> columns => [qw/id Name OperationId Name /]

I am at this point confused what is your problem exactly...

> I tried to insert the DBIC_TRACE
> in the sub ouputting it to a file but it's always empty (
> $self->db->storage->debugfh(IO::File->new('file','w'));), is there
another
> way to use it ?

When you use it this way you also need to ->storage->debug(1) for things
to start working. During debugging DBIC_TRACE=1 with dump to screen is
much more common, hence why noone answered quuckly ;)

Cheers

_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive:
http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk



--
Using Opera's revolutionary e-mail client: http://www.opera.com/m2/

_______________________________________________
List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class
IRC: irc.perl.org#dbix-class
SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/
Searchable Archive: http://www.grokbase.com/group/dbix-class@lists.scsys.co.uk

Reply via email to