Header Ads Widget

Ticker

6/recent/ticker-posts

Consultas Elocuentes De Laravel Con Carga Ansiosa

 Laravel Eloquent tiene muchas funcionalidades integradas para la capa de datos, una de ellas es la carga ansiosa en el conjunto de datos. El Eloquent ayuda a resolver el problema de consultas N + 1. La carga ansiosa puede aumentar drásticamente el rendimiento de su aplicación.

El ansioso trabajo con el conjunto de datos relacionales, eso significa que necesita definir relacional entre dos tablas o muchas tablas. Podemos obtener datos del modelo asociado para uno de los modelos.

El laravel proporciona dos métodos para aplicar una carga ansiosa:

  • carga()
  • con()

Ambos métodos Eloquent devuelven los mismos resultados. La principal diferencia entre estos dos métodos: el with()método carga todos los datos de los modelos asociados con el modelo frontal, mientras que load()ayuda a obtener todos los datos de los modelos asociados según la condición.

Por ejemplo, considere un modelo de empleado relacionado con el departamento. La relación se define así:

Obtendremos el nombre del departamento del empleado sin una carga ansiosa, considere el siguiente código:

La consulta anterior ejecutará 1 consulta para recuperar todos los empleados y, para obtener el nombre del departamento de cada empleado, se buscará usando otra consulta, por lo que si tenemos 10 empleados, se ejecutará la consulta N + 1 veces, se ejecutará la consulta 11 veces para obtener 10 empleados datos con nombre de departamento.

Eloquent ayuda ansiosa a reducir el número de consultas. Puedo cargar la información del departamento del empleado usando el with()método.

El código anterior ejecutará una consulta para obtener todos los empleados y una segunda consulta para obtener el nombre del departamento usando el in()método, solo se ejecutarán dos consultas:

Relaciones Múltiples De Carga Ansiosa

Podemos aplicar una carga ansiosa en la tabla de relaciones múltiples a la vez:

$emps = Employee::with('dept', 'salary')->get();

Restricciones De Carga Ansiosas

A veces, es posible que desee cargar con ansias una tabla de relaciones, pero también especificar una condición para la carga ansiosa. He aquí un ejemplo:

En este ejemplo, estamos ansiosos por cargar los datos de salario de los empleados, pero solo si el valor de la columna de monto de salario es mayor que 25K .

Carga Ansiosa Perezosa Usando Load ()

Hemos utilizado el with()método para obtener una carga de datos ansiosa, pero a veces es necesario cargar los datos del modelo asociado en función de la condición, esa vez debe usar el load()método.
Esto puede ser útil al decidir dinámicamente si cargar modelos relacionados o no, o en combinación con el almacenamiento en caché.

Publicar un comentario

0 Comentarios