• Publicidad

DBIx::Class Plugin CGI Application

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

DBIx::Class Plugin CGI Application

Notapor silva » 2013-05-17 05:51 @285

Estoy trabajando con CGI::Application y quisiera incorporar DBIx::Class utilizando el plugin CGI-Application-Plugin-DBIx-Class, pero estoy teniendo problemas para realizar una búsqueda simple.

Si utilizo el método find(), anda perfecto, devuelve la fila indicada:

Sintáxis: [ Descargar ] [ Ocultar ]
  1. my $data_usuarios = $self->schema->resultset('Usuario')->find(1); 


Pero si quiero utilizar el 'search' devuelve todo vacío, no recupera lo que necesito: ¿Qué es lo que estoy haciendo mal, al utilizar el CGI-Application-Plugin-DBIx-Class?

Sintáxis: [ Descargar ] [ Ocultar ]
  1. my $data_usuarios = $self->schema->resultset('Usuario')->search( 
  2. {}, 
  3. columns=>[qw/ usu_nombre usu_apellido /] 
  4. order_by => [qw/ usu_nombre /] 
  5. }, 
  6. ); 


¡¡¡Muchas gracias!!!
silva
Perlero nuevo
Perlero nuevo
 
Mensajes: 82
Registrado: 2011-05-24 05:59 @291

Publicidad

Re: DBIx::Class Plugin CGI Application

Notapor explorer » 2013-05-17 06:04 @294

Según la documentación, si no quieres indicar ninguna condición en search(), debes poner un 'undef':
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     my $data_usuarios
  2.         = $self->schema
  3.                ->resultset('Usuario')
  4.                ->search(
  5.                         undef,
  6.                         {
  7.                             columns  => [qw/ usu_nombre usu_apellido /],
  8.                             order_by => [qw/ usu_nombre              /],
  9.                         },
  10.         );
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Además, fíjate que faltaba una ',' antes de order_by.

Edito: parece que poner '{}' funciona igual que con 'undef', así que el único error que había en el código era la falta de la coma.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: DBIx::Class Plugin CGI Application

Notapor silva » 2013-05-17 08:19 @388

Gracias, explorer, pero sigue igual. Las comas no las puse, pero inicialmente las tenía.

El problema no es de sintaxis, porque no tira error, simplemente es como que no recupera nada.

Mi pregunta es si el método search(), es propio del CGI-Application-Plugin-DBIx-Class, el find() anda correctamente, pero no el search().

PREGUNTAS:
1- ¿Lo que devuelve el método find() es la misma estructura que devuelve un search?

2- ¿No será que recupera bien el search(), pero no sé leer lo que recupera?

3- Si utilizo:
Sintáxis: [ Descargar ] [ Ocultar ]
  1. my $data_usuarios = $self->schema->resultset('Usuario')->search( 
  2.         undef, 
  3.         { 
  4.             columns => [qw/ usu_nombre usu_apellido /], 
  5.             order_by => [qw/ usu_nombre /], 
  6.         }, 
  7.     ); 



¿Cómo accedo al dato recuperado? ¿ $data_usuarios->{usu_nombre} ?

¡¡¡Gracias!!!
silva
Perlero nuevo
Perlero nuevo
 
Mensajes: 82
Registrado: 2011-05-24 05:59 @291

Re: DBIx::Class Plugin CGI Application

Notapor explorer » 2013-05-17 11:06 @504

find() devuelve solo una referencia a la fila que coincide con la condición que le pasamos a find(), que puede ser un número o una serie de condiciones.

Mientras, search(), devolverá un objeto Resultset si lo llamas en contexto escalar, y una lista de objetos result si lo llamas en contexto lista.

Ahora lo estás llamando en contexto escalar (porque estás usando una variable escalar en la parte izquierda: $data_usuarios. Entonces, en $data_usuarios habrá un Resultset, así que habrá que recorrerlo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. while( my $usuario = $data_usuarios->next) {
  2.     print $usuario->usu_nombre;
  3. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Módulos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados