Laravel: Consultas con Eloquent (parte 11)
Métodos para las consultas que vamos a utilizar:
- all
- get
- where
- orderBy
- select
- take
- first
- find
Vamos a practicar con Tinker haciendo consultas. El primer paso es ejecutar Tinker y hacer uso del modelo que necesitaremos para la tabla en cuestión.
php artisan tinker
use Model\All\Curso;
Para recuperar todos los registros de la tabla
Curso::all();
Para devolver sólo la categoría «Diseño web», necesitamos una restricción.
Guardaremos el resultado de la consulta en una variable.
$cursos = Curso::where('categoria', 'Diseño web')
Para que los devuelva, usamos el método get:
$cursos = Curso::where('categoria', 'Diseño web')->get();
Para invertir el orden, llamamos al mismo método pero antes del get pasamos el método order by indicando el campo por el que queremos que se ordene:
$cursos = Curso::where('categoria', 'Diseño web')->orderBy('id','desc')->get();
También podemos ordenarlo por el nombre
$cursos = Curso::where('categoria','Diseño web')->orderBy('name','asc')->get();
Obtener el primer registro: cambiamos el método get por el método first
$cursos = Curso::where('categoria','Diseño web')->orderBy('name','asc')->first();
Para que devuelva un campo en concreto: esta vez usamos el método select
$cursos = Curso::select('name','description')->get();
Haciendo la consulta más completa, ordenando los campos
$cursos = Curso::select('name','description')->orderBy('name', 'asc')->get();
o filtrando por una categoría en concreto:
$cursos = Curso::select('name','description','categoria')->orderBy('name', 'desc')->where('categoria','Diseño web')->get();
para llamar al nombre como ´título (ponerle ese alias) debemos agregar al select el comando AS
$cursos = Curso::select('name as title','description','categoria')->orderBy('name', 'desc')->where('categoria','Diseño web')->get();
podemos especificar la cantidad de regitros que queremos que devuelva la consulta, esto antes del método get
$cursos = Curso::select('name as title','description','categoria')->where('description','Diseño web')->take(5)->get();
Vamos a buscar un registro en particular;
$curso = Curso::where('name' , 'Et illum aperiam blanditiis sequi ea sit ut nam.')->get();
Esto devuelve un array, así que no podemos acceder al nombre usando
$curso->name;
porque obtendremos un error. Podemos hacer la consulta de la siguiente manera:
$curso = Curso::where('name' , 'Et illum aperiam blanditiis sequi ea sit ut nam.')->first();
Y ahora sí tendremos el nombre usando $curso->name;
Lo mismo, pero buscando por id:
$curso = Curso::where('id',5)->first();
Otra forma de acceder a este tipo de datos es no usar el método where sino el método find del que nos provee eloquent, ya que la búsqueda por id es muy utilizada:
$curso = Curso::find(5);
Solicitamos todos los registros cuya id sea mayor que 45, ahora a where le pasamos 3 parámetros
$cursos = Curso::where('id','>',45)->get();
Se puede hacer con mayor que, menor que distinto a, mayor o igual. También podemos usar like , para que devuelva lo que contenga en alguna parte del campo los caracteres del tercer parámetro…
$cursos = Curso::where('name','like','%voluptate%')->get();
Recursos:
Enlace de Youtube: https://www.youtube.com/watch?v=amwXrsHxoIg&list=PLZ2ovOgdI-kWWS9aq8mfUDkJRfYib-SvF&index=15