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