OpenCart 🇺🇦

Схема

public array getManufacturers ( array $data = array() )

Аргументы

Аргумент Возможный тип Описание
$data = array() array

Описание

Функция позволяет получить список производителей. Если производители не найдены, вернет пустой массив (array()), иначе вернет 2-мерный массив, каждая строка которого будет содержать колонки:
Ключ Тип Описание Пример значения
manufacturer_id int ID производителя 5
name string Название производителя HTC
image string Путь к изображению производителя data/demo/htc_logo.jpg
sort_order int Порядок сортировки 0
store_id int ID магазина (зачастую 0) 0
Так-же при выборке можно использовать различные фильтры, передав их в массив $data. Вот список доступных фильтров:
Ключ Допустимые значения Описание
sort name, sort_order Поле, по которому будет произведена сортировка
order ASC, DESC Сортировка по убыванию \ возрастанию
start int > 0 Запись в БД, с которой будет производиться выборка
limit int > 0 Количество записей, которые будут выбраны из БД

Пример использования:

// вызов из контроллера
$manufacturers  = $this->model_catalog_manufacturer->getManufacturers(array('start' => 3, 'limit' => 30));

Исходный код

if ($data) {
	$sql = "SELECT * FROM " . DB_PREFIX . "manufacturer m LEFT JOIN " . DB_PREFIX . "manufacturer_to_store m2s ON (m.manufacturer_id = m2s.manufacturer_id) WHERE m2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";
	
	$sort_data = array(
		'name',
		'sort_order'
	);	
	
	if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
		$sql .= " ORDER BY " . $data['sort'];	
	} else {
		$sql .= " ORDER BY name";	
	}
	
	if (isset($data['order']) && ($data['order'] == 'DESC')) {
		$sql .= " DESC";
	} else {
		$sql .= " ASC";
	}
	
	if (isset($data['start']) || isset($data['limit'])) {
		if ($data['start'] < 0) {
			$data['start'] = 0;
		}

		if ($data['limit'] < 1) {
			$data['limit'] = 20;
		}	
	
		$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
	}				
			
	$query = $this->db->query($sql);
	
	return $query->rows;
} else {
	$manufacturer_data = $this->cache->get('manufacturer.' . (int)$this->config->get('config_store_id'));

	if (!$manufacturer_data) {
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "manufacturer m LEFT JOIN " . DB_PREFIX . "manufacturer_to_store m2s ON (m.manufacturer_id = m2s.manufacturer_id) WHERE m2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY name");

		$manufacturer_data = $query->rows;
	
		$this->cache->set('manufacturer.' . (int)$this->config->get('config_store_id'), $manufacturer_data);
	}

	return $manufacturer_data;
}