[Dbix-class] problem using model->search: only one item is retrieved
Fernan Aguero
fernan at iib.unsam.edu.ar
Thu Jun 15 16:03:42 CEST 2006
Hi!
I've a test DB with two items:
gene_id= 1, gene_name= lanosterol demethylase
gene_id = 2, gene_name= lanosterol demethylase
(there are other columns where the two genes differ)
mysql> select gene_name FROM genes;
+------------------------+
| gene_name |
+------------------------+
| lanosterol demethylase |
| lanosterol demethylase |
+------------------------+
2 rows in set (0.00 sec)
mysql> select gene_id FROM genes WHERE gene_name='lanosterol demethylase';
+---------+
| gene_id |
+---------+
| 1 |
| 2 |
+---------+
2 rows in set (0.00 sec)
Now, in my catalyst controller I have this:
my $model = $context->model('DB::Genes');
if ($context->request->param('gene_name')) {
my $name = $context->req->param('gene_name');
my $geners = $model->search({ gene_name => $name } );
$context->stash->{geners} = $geners;
$context->stash->{template} = "genes.tt";
}
and in my genes template:
[% FOREACH obj IN geners.next() %]
[% obj.gene_id %]
[% obj.gene_name %]
[% obj.gene_length %]
et cetera
[% END %]
However I only get the gene with id=1 listed in the web
page (the same is true if I iterate over the resultset in
the controller and print log info using $context->log->info)
A 'search_literal' didn't work either (only gets gene_id 1)
my $gene_rs = $model->search_literal('gene_name = ?', "$name");
Wasn't 'search' supposed to be different from 'find'?
What am I doing wrong?
Fernan
DBIx-Class-0.06003
DBIx-Class-Loader-0.21
DBIx-Class-Schema-Loader-0.02007
DBI-1.50
DBD-mysql50-3.0003
Catalyst-5.6902
Catalyst-Model-DBIC-0.14
More information about the Dbix-class
mailing list