TransWikia.com

Consulta múltiples tablas con laravel eloquent

Stack Overflow en español Asked by Erain Moya on November 4, 2021

Tengo el siguiente diagrama:

Diagrama

Estoy haciendo la respectiva consulta para traer la información contenida en las tablas. Hasta el momento tengo lo siguiente:

$data = Restaurant::leftJoin('restaurant_user', 'restaurants.id', 'restaurant_user.restaurant_id')
                    ->leftJoin('users', 'restaurant_user.user_id', 'users.id')
                    ->leftJoin('user_code_activation', 'users.id', 'user_code_activation.user_id')
                    ->leftJoin('codes', 'user_code_activation.code_id', 'codes.id')->get();

Dicho query me arroja la información correctamente, pero lo que no logro es conectar las seis tablas.

Ahora bien, alguna sugerencia por favor, para dicha consulta u otra alternativa idónea para realizarla.

One Answer

Si lo que deseas es usar esa base de datos en un proyecto de Laravel, debes:

1. Definir los Modelos necesarios:

  1. User
  2. Resturant
  3. Code

2. Definir las relaciones respectivas en cada modelo:

A. Para User:

  1. User m--------m Restaurant --> restaurants()
  2. User m--------m Code (user_activate_code) --> activationCodes()
  3. User m--------m Code (user_redeem_code) --> redeemCodes()

B. Para Resaturant:

  1. Restaurant m--------m User --> users()

C. Para Code:

  1. Code m--------m User (user_activate_code) --> activatedCodeUsers()
  2. Code m--------m User (user_redeem_code) --> redeemCodeUsers()

3. Hacer los querys con Eloquent:

Ya en este punto puedes usar el ORM de Laravel para hacer las consultas de manera simple, como:

$restaurant = AppRestaurant::find(1); // traer un restaurante.
$restaurant->users(); // jalar los usuarios del restaurante.

Answered by Kenny Horna on November 4, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP