fixed findStreets query
This commit is contained in:
@@ -58,33 +58,29 @@ class PreorderIFrameModel extends mfBaseModel
|
|||||||
|
|
||||||
public function findStreets(array $params): array
|
public function findStreets(array $params): array
|
||||||
{
|
{
|
||||||
$whereClauses = [];
|
if (empty($params['gemeindeId']) && empty($params['clusterId'])) return [];
|
||||||
if (!empty($params['gemeindeId'])) {
|
|
||||||
$whereClauses[] = "g.id = " . intval($params['gemeindeId']);
|
|
||||||
} elseif (!empty($params['clusterId'])) {
|
|
||||||
$whereClauses[] = "gn.netzgebiet_id = " . intval($params['clusterId']);
|
|
||||||
} else {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
$whereClauses[] = "o.name = '" . $this->db->escape($params['city']) . "'";
|
$sql = "SELECT DISTINCT s.name
|
||||||
$whereClauses[] = "EXISTS (SELECT 1 FROM addressdb.Plz p WHERE p.plzstring = " . $this->db->escape($params['zip']) . " AND p.gemeinde_id = o.gemeinde_id)";
|
FROM addressdb.Strasse s
|
||||||
$whereString = implode(" AND ", $whereClauses);
|
JOIN addressdb.Gemeinde g ON s.gemeinde_id = g.id
|
||||||
|
JOIN addressdb.Ortschaft o ON o.gemeinde_id = g.id
|
||||||
|
LEFT JOIN addressdb.GemeindeNetzgebiet gn ON g.id = gn.gemeinde_id
|
||||||
|
WHERE o.name = '" . $this->db->escape($params['city']) . "'
|
||||||
|
AND EXISTS (SELECT 1 FROM addressdb.Plz p WHERE p.plzstring = " . $this->db->escape($params['zip']) . " AND p.gemeinde_id = o.gemeinde_id)";
|
||||||
|
|
||||||
$query = "
|
$cond = !empty($params['gemeindeId'])
|
||||||
SELECT DISTINCT s.name
|
? " AND g.id = " . intval($params['gemeindeId'])
|
||||||
FROM addressdb.Strasse s
|
: " AND gn.netzgebiet_id = " . intval($params['clusterId']);
|
||||||
JOIN addressdb.Gemeinde g ON s.gemeinde_id = g.id
|
|
||||||
JOIN addressdb.Ortschaft o ON o.gemeinde_id = g.id
|
|
||||||
LEFT JOIN addressdb.GemeindeNetzgebiet gn ON g.id = gn.gemeinde_id
|
|
||||||
WHERE $whereString
|
|
||||||
ORDER BY s.name ASC
|
|
||||||
";
|
|
||||||
|
|
||||||
$res = $this->db->query($query);
|
$rows = $this->db->fetch_all_assoc($this->db->query($sql . $cond));
|
||||||
return array_column($this->db->fetch_all_assoc($res), 'name');
|
|
||||||
|
// Fallback: If empty result and we were using clusterId, run without the specific ID constraint
|
||||||
|
if (empty($rows) && empty($params['gemeindeId']))
|
||||||
|
$rows = $this->db->fetch_all_assoc($this->db->query($sql));
|
||||||
|
|
||||||
|
return array_column($rows, 'name');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function findAddresses(array $params): array
|
public function findAddresses(array $params): array
|
||||||
{
|
{
|
||||||
$whereClauses = [
|
$whereClauses = [
|
||||||
|
|||||||
Reference in New Issue
Block a user