Eloquent (ORM)¶
Eloquent es el creador de querys de Laravel, su propósito no es más que el de cómo realizar operaciones que en algún momento vas a necesitar. Con Eloquent podremos ver la consulta que esta haciendo nuestra app o incluso realizar consultas aleatorias de nuestra base de datos.
Ver el SQL¶
Si quieres ver el SQL generado de una consulta, en lugar de usar el método get()
, find()
o first()
, usaremos el método toSql()
. Hay dos maneras de usarlo, o con el query builder o con el objeto del modelo..
DB:table('post')->toSql();
Post::get()->toSql()
Joins¶
Para realizar el ejemplo con joins, supongamos que queremos hacer una consulta entre las tablas posts
y categories
.
DB:table('post')->toSql();
Post::join('categories', 'categories.id, '=', 'posts.category_id')->get()
De este modo hacemos un join con la tabla categories
, y luego se les marca el nexo de unión. En caso de que dos columnas se llamen iguales, prevalece la que está dentro del join. Con esta función se genera un inner join, si quieres explorar más te recomiendo la documentación sobre querys
Ordenación¶
Como en cualquier consulta, podemos elegir la manera en la que lo queremos ordenar. Para ello usaremos la función orderBy()
Post::orderBy('id', 'desc')->get();
Clausula Where¶
Con el query builder podemos generar una serie de consultas con where
muy diversas: Where o orWhere o WhereIn o WhereNotIn.
$ids = array( 1, 2, 3, 4, 5, 6);
// Post mayores que 1
$posts = Post::where('posts.id', '>' ,'1')->get():
// Post en el array de ids
$posts = Post::whereIn('posts.id',$ids)->get():
// Post no en el array de ids
$posts = Post::whereNotIn('posts.id',$ids)->get():
// El where() es sumatorio
Post::where("id','›=',1)-›where('category_id',1)-›toSql()
"select * from "posts" where "id" >=? and "category_id" = ?"
// Uso de orWhere()
Post::where("id','›=',1)-›orWhere('category_id',1)-›toSql()
"select * from "posts" where "id" >=? or "category_id" = ?"
Esto son consultas relativamente sencillas, si necesitas algo más complejo te recomiendo consultar la documentación para que encuentres lo que necesitas.
Registros aleatorios¶
En algún momento puedes necesitar poner un recurso aleatorio, para ello:
Post::inRandomOrder->get();
Esto nos dará los recursos en modo aleatorio.
Actividades¶
-
AC 725. (RA8 / CE8a CE8b CE8c CE8d / IC1 / 3p) - Sobre el proyecto de lista de tareas, muestra las tareas en el frontal en un orden aleatorio y en la administración en orden.
-
AR 726. (RA8 / CE8a CE8b CE8c CE8d / IC1 / 3p) - En el frontal de la lista de tareas, haz enlaces que permitan filtrar por las categorías.
-
AP 727. (RA8 / CE8a CE8b CE8c CE8d / IC1 / 3p) - Los administradores de la aplicación de e-commerce necesitan poder ordenar el listado por orden alfabético y por stock.