Query Builder en Laravel 5

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

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post