Inner Join en Laravel mediante Query Builder

Laravel
📌¿Este artículo fue útil para ti? Puedes agradecer de muchas formas 🙂
1.👉Suscríbete para recibir más contenidos gratuitos.
2.👍 Compartir este artículo en tus redes sociales.
3.🔔Dejar un comentario.

Todos sabemos la importancia que tienen las consultas combinadas en una base de datos haciendo uso de SQL, en este artículo veremos como podemos hacer esas consultas combinadas o join’s desde Laravel haciendo uso de Query Builder mediante el cual de forma cómoda podremos generar las consultas a nuestra base de datos que además funciona con todos los sistemas compatibles con Laravel, como nota el cabe recordar que Query Bulder utiliza parámetros PDO con el fin de proteger la aplicación de ataques de inyección SQL, Excelente no? 🙂

Primero veamos un poco el uso básico de Query Builder:

Vamos a obtener todos los campos de la tabla users e imprimirlos:
Código del controlador

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php namespace App\Http\Controllers;
use Illuminate\Contracts\Auth\Guard;
use DB;
class UsuariosController extends Controller {
    /*
    |--------------------------------------------------------------------------
    | Usuarios Controller
    |--------------------------------------------------------------------------
    |
    | This controller renders your application's "dashboard" for users that
    | are authenticated. Of course, you are free to change or remove the
    | controller as you wish. It is just here to get your app started!
    |
    */

    /**
     * Create a new controller instance.
     *
     * @return void
     */

    public function __construct(Guard $auth)
    {
        $this->auth = $auth;
        $this->middleware('auth');
    }
    /**
     * Show the application dashboard to the user.
     *
     * @return Response
     */

    public function index()
    {
       
    }
// Esta es la funcion que nos interesa
// Necesitamos llamar al namespace DB
    public function getUsuarios()
    {
        $e = DB::table('users')->get();
        dd($e);
    }
}

Dbemos recordar que para poder imprimir nuestros datos en el navegador debemos contar con una ruta que apunte al método en el controlador, así:

1
Route::get('usuarios', 'UsuariosController@getUsuarios');

Ahora si podemos dirigirnos al navegador, por ejemplo en mi caso la ruta es:

http://127.0.0.1/proyecto/public/usuarios

Obtenemos como salida:

query builder

Muy bien, ahora que ya sabemos como funciona Query Builder tan solo veamos el método para hacer un Inner Join, utilizaremos la tabla users y una tabla llamada users_desc, en la cual estan todos los datos personales de cada usuario, veamos:

1
2
3
4
5
6
7
8
9
10
public function getUsuarios()
    {
        $usuarios = \DB::table('users_desc')
        ->select('users.name','users.email','users_desc.identificacion','users_desc.nombres',
        'users_desc.apellidos', 'users_desc.direccion')
        ->join('users', 'users.id', '=', 'users_desc.id')
        ->where('users_desc.estado', '1')
        ->get();
        dd($usuarios);
    }

Si analizamos un poco la consulta construida, es lo equivalente en SQL a:

1
2
3
4
5
6
7
8
9
10
11
12
SELECT
    `users_desc`.`identificacion`
    , `users_desc`.`nombres`
    , `users_desc`.`apellidos`
    , `users_desc`.`direccion`
    , `users`.`name`
    , `users`.`email`
FROM
    `proyecto`.`users_desc`
    INNER JOIN `proyecto`.`users`
        ON (`users_desc`.`id` = `users`.`id`)
        WHERE users_desc.`estado`='1'

Por último podemos observar mediante nuestra ruta en el navegador los datos obtenidos de la dos tablas mediante el uso del join en Laravel:

Query builder 2

De esta forma podemos manejar consultas y realizar el numero de joins que necesitemos, incluyendo diferentes clausulas que nos permitan búsquedas más complejas, si deseas ampliar el uso de Query builder puedes hacerlo directamente desde su documentación acá.

Nos vemos en un próximo artículo de la sección de Php con Laravel.

Un comentario

  1. Edson Diaz Contestar

    Como lo envías a la vista
    ///
    $datos = DB::table(‘usuarios’)
    ->join(‘contenido’, ‘usuarios.id’, ‘=’, ‘contenido.id_usu’)
    ->join(‘banner’, ‘contenido.id’, ‘=’, ‘banner.id_contenido’)
    ->select(‘*’)
    ->get();
    //DD( $datos);

    return view(«zapaterias.zapaterias_menu,([‘datos’=>$datos])»);

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *