shops.class.php
1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
Class Shops
{
private $db;
private $lang;
function __construct ($lang)
{
$this->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);
}
}
?>