Hoy vamos a ver como utilizar el Query Builder en Laravel 5, que como sabemos nos permite hacer consultas a la base de datos mediante una capa de abstracción que nos proporciona seguridad, optimización y compatibilidad con la mayoría de SGBD que podemos usar.
Sacar registros de la base de datos
Podemos hacer pruebas de algunas de las consultas que nos permite hacer Laravel 5 en una acción de un controlador, aunque estaría interesante abstraer todas estas consultas en «clases tipo repositorio» como lo hace Symfony2 o en modelos de consulta como lo hace Codeigniter y otros, gracias a los namespaces podemos hacer lo que queramos en este sentido.
Ejemplos:
public function getIndex() { // Conseguir todos los cineastas $cineastas = DB::table('cineastas')->get(); foreach ($cineastas as $cineasta) { var_dump($cineasta->nombre); } // Condición where y first para conseguir una sola linea $cineasta = DB::table('cineastas')->where('nombre', 'test55')->first(); var_dump($cineasta->nombre); var_dump($cineasta->edad); //Conseguir columnas especificas $cineastas = DB::table('cineastas')->select('id', 'nombre')->get(); foreach ($cineastas as $cineasta) { var_dump($cineasta->id); var_dump($cineasta->nombre); } // Where //AND $cineastas = DB::table('cineastas') ->where('edad', '>', 40) ->where('nombre', 'test42') ->get(); foreach ($cineastas as $cineasta) { var_dump($cineasta->nombre." ".$cineasta->edad); } // OR $cineastas = DB::table('cineastas') ->where('edad', '>', 40) ->orWhere('nombre', 'test12') ->get(); foreach ($cineastas as $cineasta) { var_dump($cineasta->nombre." ".$cineasta->edad); } //Where dinamicos // Consigue los cineastas cuando el id y el nombre sean esos $cineasta = DB::table('cineastas') ->whereIdAndNombre(70, 'test69') ->first(); var_dump($cineasta); }
Hacer joins
Aquí vemos un INNER JOIN básico pero esto lo podemos complicar tanto como queramos.
// Conseguir todas las películas con su cineasta $peliculas=DB::table('peliculas') ->join('cineastas', 'cineastas.id', '=', 'peliculas.cineasta_id') ->select('peliculas.titulo', 'peliculas.anio', 'cineastas.nombre') ->get(); foreach ($peliculas as $pelicula) { var_dump($pelicula->titulo." - ".$pelicula->anio." - ".$pelicula->nombre); }
Insertar en la base de datos
Insertar registros en la base de datos es simple.
DB::table('cineastas')->insert( ['nombre' => 'Christopher Nolan', 'edad' => 44] );
También podríamos pasarle un array multidimensional y funcionará.
Actualizar registros
Podemos actualizar el cineasta con id 44 y cambiarle el nombre.
DB::table('cineastas') ->where('id', 44) ->update(['nombre' => 'Víctor Robles']);
También tenemos métodos para incrementar y reducir el valor de algún campo.
Borrar registros
Podemos borrar registros concreto.
DB::table('cineastas')->where('edad', '>', 66)->delete();
Borrar todo el contenido de una tabla.
DB::table('cineastas')->delete();
Truncar la tabla para que los indices autoincrementales empiecen de cero.
DB::table('cineastas')->truncate();
Esto es todo lo básico, puedes conseguir mucha mas información en la documentación oficial de Laravel 5.
Más información:
http://laravel.com/docs/5.0/queries