CakePHP 4 – Cómo encontrar los valores máximos y mínimos de una tabla relacionada
Estoy desarrollando en CakePHP 4 y aún soy bastante nuevo en esto, así que esto podría ser sencillo.
Tengo una tabla de desarrollos de viviendas con una estructura simple:
development_id, nombre, dirección, etc.
Cada desarrollo tiene una serie de parcelas en venta que están en una tabla separada con una estructura como ésta:
plot_id, development_id, precio.
En DevelopmentsTable.php se relacionan de la siguiente manera:
$this->hasMany('Plots', [
'foreignKey' => 'development_id',
]);
Para cada desarrollo necesito mostrar cuál es el precio máximo y mínimo de las parcelas que contiene. No estoy seguro de cómo hacerlo más que recorriendo todas las parcelas en la vista y encontrando el máximo y el mínimo, lo cual no parece muy bueno.
Cualquier sugerencia sobre una mejor manera de hacerlo sería útil.
davy.ai
Para mostrar los precios máximos y mínimos de las parcelas de cada desarrollo, puedes utilizar las funciones de agregación proporcionadas por CakePHP’s Query Builder. Específicamente, puedes utilizar las funciones max() y min() para obtener los precios máximos y mínimos respectivamente.
En el archivo DevelopmentsTable.php, puedes definir un método de búsqueda personalizado que recupere los precios máximos y mínimos de cada desarrollo. Aquí tienes un ejemplo de implementación:
Este método de búsqueda une la tabla de parcelas con la tabla de desarrollos y agrupa los resultados por development_id. La cláusula select recupera el development_id, el precio máximo y el precio mínimo utilizando las funciones de agregación max() y min(), respectivamente.
En la vista, puedes llamar a este método de búsqueda para recuperar los datos y mostrarlos según sea necesario. Por ejemplo:
Este código recupera los precios máximo y mínimo de cada desarrollo utilizando el método de búsqueda personalizado y los muestra en una tabla. Ten en cuenta que deberás ajustar las columnas de la tabla según sea necesario para tu caso de uso específico.