Ver Mensaje Individual
  #4 (permalink)  
Antiguo 24/07/2013, 16:17
eternoaprendiz
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 73
Antigüedad: 10 años, 11 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.