moloquent left inner conectar con php eloquent lumen

php - left - Lumen: ¿cómo obtener listas de sub tabla usando Eloquent?



moloquent (1)

Tiene razón en que la carga diferida no es eficiente en este caso.

Solo necesitas la lista de casas, solo crearía la consulta adecuada con articulaciones.

Aquí hay un ejemplo:

House::query() ->join(''street'', ''house.id'', ''street.id'') ->join(''town'', ''street.town_id'', ''='', ''town.id'') ->where(''town.id'', $town_id) ->get();

Ajustar según sea necesario.

A veces tiene más sentido usar el generador de consultas en lugar de elocuente.

Tengo las siguientes tablas de base de datos

  • Ciudades
  • Calles
  • Casas

Tienen una relación de uno a muchos entre sí, por lo que los Towns pueden tener muchas Streets y Streets pueden tener varias Houses .

Tengo el ID del Town y solo quiero obtener una lista de todas las Houses en el pueblo. Así que en este momento estoy haciendo.

//This gives me streets and houses in nested arrays $towns = Town::with([''streets'', ''streets.houses'' => function($query) { $query->where(''active'', 1) }])->find($town_id); //But I only want a list of houses so I do $houses = $towns->streets->map(function($street) { return $street->houses; });

Esto funciona, pero ¿hay una mejor manera de hacerlo? Siento que debería ser capaz de hacer que la lista de casas sea simplemente elocuente. Tener que hacer un mapeo después no parece correcto.