Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Problemas para visualizar consulta con laravel

Estas en el tema de Problemas para visualizar consulta con laravel en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola amigos espero me puedan ayudar, la situación es la siguiente Voy a iniciar un proyecto con laravel , ya cree el proyecto con el ...
  #1 (permalink)  
Antiguo 24/07/2013, 11:01
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Problemas para visualizar consulta con laravel

hola amigos espero me puedan ayudar, la situación es la siguiente

Voy a iniciar un proyecto con laravel , ya cree el proyecto con el siguiente comando

Código BASH:
Ver original
  1. composer create-project laravel/laravel miproyecto

La base de datos ya esta creada entonces no voy a utilizar la migración php artisan migrate:make

Entonces procedi a crear el modelo Registro.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. use Illuminate\Auth\UserInterface;
  4. use Illuminate\Auth\Reminders\RemindableInterface;
  5.  
  6. class Registro extends Eloquent implements UserInterface, RemindableInterface {
  7.    
  8.     protected $table = 'anemometro';
  9.    
  10. }


en routes.php
Código PHP:
Ver original
  1. Route::get('registro', function()
  2. {
  3.     $registros = DB::select('SELECT * FROM anemometro ORDER BY id DESC LIMIT 1');
  4.     return View::make('registros')->with('registros', $registros);
  5. });


y en la vista tengo registros.blade.php
Código PHP:
Ver original
  1. @section('content')
  2. <br>
  3. <br>
  4. <br>
  5. <div class="container">
  6. <h3>Último Registro</h3>
  7.     @foreach($registros as $registro)
  8.         <p>{{ $registro->id }}--{{ $registro->id }}--{{ $registro->id }}</p>
  9.  
  10.     @endforeach
  11. </div>
  12. @stop


no imprime nada
  #2 (permalink)  
Antiguo 24/07/2013, 14:07
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 73
Antigüedad: 10 años, 10 meses
Puntos: 27
Respuesta: Problemas para visualizar consulta con laravel

Menudo cacao tienes


Por partes:

Independientemente de que tengas la base de datos creada, no es incompatible con:

php artisan migrate:make

Este comando te crea una tabla extra donde llevará la pista de los siguientes migrations que hagas.

De todas formas, si no vas ha usar migrations y vas a añadir los campos "a mano", pues efectivamente te lo pueder ahorrar.


Tu modelo registro está mal, de hecho no sé como no te da error. Indicas que el modelo Registro implementa las interfaces UserInterface, RemindableInterface, cuando no es cierto, salvo que tengas los métodos definidos:

- getReminderEmail() -> indica que tu objeto puede devolver un correo.
- getAuthIdentifier() -> indica el ID único de usuario
- getAuthPassword() -> indica el password del usuario

¿ Tu tabla bitácora contiene datos de usuarios que necesiten autenticarse ?

Desde luego, te vas a complicar mucho si no usas las tablas / prefijos / nomemglaturas de Laravel en cuestión de bases de datos / modelos.


Y desde luego, usa mientras puedas el Query Builder de Laravel, que para eso lo tiene:

Código PHP:
DB::table('anemometro')->orderBy('id''desc')->take(1)->get(); 
  #3 (permalink)  
Antiguo 24/07/2013, 14:26
 
Fecha de Ingreso: septiembre-2010
Mensajes: 1.853
Antigüedad: 13 años, 7 meses
Puntos: 6
Respuesta: Problemas para visualizar consulta con laravel

eternoaprendiz gracias por responder

osea que mi modeloRegistro.php debe de quedar así

Código PHP:
Ver original
  1. class Registro extends Eloquent{
  2.     protected $table = 'anemometro';
  3.     }

este es un nuevo proyecto el cual no tiene datos de usuarios ni mucho menos autenticaciones

tengo estas dudas:

1. La aplicación debe de contener un enlace para listar todos los registros de la base de datos, para este tengo el layout layout.blade.php (hasta el momento solo este enlace me solicitaron)

Código HTML:
Ver original
  1. <li><a href="#">Registros</a></li>

segun lo que tengo entendido deberia de crear un controllador para colocar en este la accion de listar todos los archivos o las qeu me requieran porque en este momento estoy utilizando el archivo routes.php para colocar las sentencias sql .

este es mi archivo routes.php lo corregui con lo que me dijo eternoaprendiz
Código PHP:
Ver original
  1. Route::get('registro', function()
  2. {
  3.     $registros = DB::table('anemometro')->orderBy('id', 'desc')->take(1)->get();
  4.     return View::make('registros')->with('registros', $registros);
  5. });
  #4 (permalink)  
Antiguo 24/07/2013, 16:17
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 73
Antigüedad: 10 años, 10 meses
Puntos: 27
Respuesta: Problemas para visualizar consulta con laravel

En principio, el protocolo a seguir en Laravel es este:
  • Modelos en singular (Pedido, Informe, Usuario, ...)
  • Tablas en plural y minúsculas (pedidos, informes, usuarios, ...)
  • La columna primary key generalmente debe ser "id" (autonumérica).
  • Las columnas que relacionan con otras tablas en singular y minúsculas: pedidos.cliente_id, noticias.comentario_id, ...
  • Si tienes tablas pivot (tablas que unen dos tablas para hacer relaciones muchos a muchos) deben ponerse en orden alfabético (roles_usuarios, autores_libros, actores_peliculas, peliculas_urls, ...)

Laravel pluraliza bien en inglés, pero en castellano puede no ser tan fino, así que te recomiendo que te plantees programar en inglés.

Todo esto es una recomendación, pues hay muchos automatismos que se basan en lo anterior, si sigues otro criterio, cada vez que definas relaciones entre objetos tendrás que definir que columnas usar.

En tu caso, deberías tener algo como esto:

Código PHP:

// models/Anemometro.php

class Anemometro extends Eloquent {
       protected 
$table "anenometros";

       public static function 
getLast()
       {
             return 
Anemometro::orderBy('id''desc')->take(1)->first();
       }
}


// routes.php

function get("last", function() {
          
// Esto devuelve un solo objeto de tipo Anemometro, no un array con una fila
          
$last Anemometro::getLast();
}); 
Haciéndolo así, $last contendrá una instancia de la clase Anemometro en vez de un simple array de objetos estandar.

Por ejemplo, yo tengo esto:

Código PHP:
        var_dump(Speaker::orderBy('id''desc')->take(1)->get());
        
var_dump(DB::table('speakers')->orderBy('id''desc')->take(1)->get()); 
Y el resultado es:

Código PHP:


object
(IlluminateDatabaseEloquentCollection)[150]
  protected 
'items' => 
    array (
size=1)
      
=> 
        
object(Speaker)[148]

////////////////////////////////

array (size=1)
  
=> 
    
object(stdClass)[138
Como puedes ver, la primera consulta devuelve un objeto de tipo Collection con items de tipo Speaker (con lo que puedes, cuando los recorras, usar sus métodos). Además la Colección se puede ordenar, filtrar, ...

El segundo devuelve un simple array con clases estandar.

Etiquetas: laravel, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:09.