db = sdb::getInstance (); $this->lang = $lang; } public function getShops ($brend_id = null, $param = []) { $search = []; $left_join = ''; if (isset($param['city']) && strlen ($param['city']) > 0) { $search[] = sprintf ("s.city='%s'", $param['city']); } if (count ($brend_id) > 0) { //$left_join = "LEFT JOIN catalogs_brends_keys k ON k.shop_id=s.id"; //$search[] = sprintf("k.brend_id in (%s)",implode(',',$brend_id)); foreach ($brend_id as $key => $id) { $left_join .= "LEFT JOIN catalogs_brends_keys k_$key ON k_$key.shop_id=s.id "; $search[] = sprintf ("k_$key.brend_id='%d'", $id); } } $sql = "select s.* from shops s $left_join where 1=1 "; if (count ($search)) $sql .= "AND " . implode (" AND ", $search) . " "; $sql .= "group by s.id order by s.id desc"; $res = $this->db->getAll ($sql, [], DB_FETCHMODE_ASSOC); foreach ($res as $key => $row) { $res[$key]['stars'] = $this->db->getAll ("select k.brend_id,b.name as brend_name from catalogs_brends_keys k LEFT JOIN catalogs_brends b ON b.id=k.brend_id where k.shop_id=?", [$row['id']], DB_FETCHMODE_ASSOC); } return $res; } public function getCity () { $sql = "select city from shops group by city order by city asc"; return $this->db->getAll ($sql, [], DB_FETCHMODE_ASSOC); } } ?>