Mejora en velocidad de busqueda

This commit is contained in:
Juan Pablo Vial
2024-02-28 21:44:37 -03:00
parent d9b5bc6507
commit 48bfe5d8ab
7 changed files with 269 additions and 38 deletions

View File

@ -298,7 +298,6 @@ class Venta extends Ideal\Repository
OR CONCAT_WS(' ', `propietario`.`nombres`, `propietario`.`apellido_paterno`, `propietario`.`apellido_materno`) LIKE :propietario
OR rut = :rut
OR CONCAT_WS('-', rut, dv) = :rut");
error_log($query.PHP_EOL,3,'/logs/debug');
return $this->fetchIds($query, [':propietario' => "%{$propietario}%", ':rut' => $propietario]);
}
public function fetchByPropietarioNombreCompleto(string $propietario): array
@ -356,6 +355,27 @@ class Venta extends Ideal\Repository
->where('bono_pie = ?');
return $this->fetchId($query, [$bono_id]);
}
public function fetchByIdForSearch(int $venta_id): array
{
$query = $this->connection->getQueryBuilder()
->select('venta.id AS id, venta.fecha AS fecha, venta.valor_uf AS valor')
->columns('proyecto.id AS proyecto_id, proyecto.descripcion AS proyecto_descripcion')
->columns('CONCAT_WS(" ", propietario.nombres, propietario.apellido_paterno, propietario.apellido_materno) AS propietario')
->columns('unidad.descripcion AS unidad_descripcion, tu.descripcion AS tipo_unidad_descripcion, ptu.m2 + ptu.logia + ptu.terraza AS superficie')
->columns('tev.activa')
->from($this->getTable())
->joined('JOIN propietario ON propietario.rut = venta.propietario')
->joined('JOIN propiedad_unidad pu ON pu.propiedad = venta.propiedad')
->joined('JOIN unidad ON unidad.id = pu.unidad')
->joined('JOIN proyecto_tipo_unidad ptu ON unidad.pt = ptu.id')
->joined('JOIN proyecto ON proyecto.id = ptu.proyecto')
->joined('JOIN tipo_unidad tu ON tu.id = ptu.tipo')
->joined('JOIN (SELECT ev1.* FROM estado_venta ev1 JOIN (SELECT MAX(id) AS id, venta FROM estado_venta GROUP BY venta) ev0 ON ev0.id = ev1.id) ev ON ev.venta = venta.id')
->joined('JOIN tipo_estado_venta tev ON ev.estado = tev.id')
->where('venta.id = ? AND tu.descripcion = "departamento"')
->group('venta.id');
return $this->connection->execute($query, [$venta_id])->fetch(PDO::FETCH_ASSOC);
}
protected function fetchIds(string $query, ?array $data = null): array
{