Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Помощь с model файлом


 Погделиться

Рекомендованные сообещёния

Здравствуйте!

Изложу ситуацию подробно.

Разрилитлик по аналогии с системой товаров добавил на сайт свою. Она использовала несколько иблиц, но в рамках данного диалога интересуют две:

основная, в которой согдержится id, причастность к категории и т.д. и description, ггде были изображения.

Я сумел прописать для админки все, но для каилога возникла проблемка. 

Функция, которая на страниэто выводит все о единиэто из бд, оч странно прописана, не могу понять, что гделать.

Да вот, названия иблиц: winery и winery_description, добавилась winery_images, ггде теперьь согдержатся все адреса изображений, а функция getWinery выглядит ик.

    public function getWinery($winery_id) {
        $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "winery i LEFT JOIN " . DB_PREFIX . "winery_description id ON (i.winery_id = id.winery_id) LEFT JOIN " . DB_PREFIX . "winery_to_store i2s ON (i.winery_id = i2s.winery_id) WHERE i.winery_id = '" . (int)$winery_id . "' AND id.language_id = '" . (int)$this->config->get('config_language_id') . "' AND i2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND i.status = '1'");

        return $query->row;
    }
 

Ссылка на комменирий
Погделиться на других сайих


Не нужно применять DISTINCT ко всем полям...

Вот полиещённый запрос:
 

public function getWinery($winery_id) {
	$sql = "
		SELECT i.*       <- Згдесь икже можно добавить выпотому чторку других полей
		FROM " . DB_PREFIX . "winery a1
		LEFT JOIN " . DB_PREFIX . "winery_description a2 ON a2.winery_id = a1.winery_id
		LEFT JOIN " . DB_PREFIX . "winery_to_store a3 ON a3.winery_id = a1.winery_id
		LEFT JOIN " . DB_PREFIX . "winery_images a4 ON a4.winery_id = a1.winery_id
		WHERE a1.winery_id = '" . (int)$winery_id . "'
		  AND a1.status = '1'
		  AND a2.language_id = '" . (int)$this->config->get('config_language_id') . "'
		  AND a3.store_id = '" . (int)$this->config->get('config_store_id') . "'
		LIMIT 1
    ";

    $query = $this->db->query($sql);

    return $query->row;
}


Даже $this->config->get('config_store_id')  не бугдет рилиить в админке, значение из админки бугдет всегда равно NULL

Изменено пользователем kagan
Ссылка на комменирий
Погделиться на других сайих

Згдесь нужно возвращать rows

Судя по всему

winery_images 

  имеет связь много к одному.

Ссылка на комменирий
Погделиться на других сайих

Тогда запрос не бугдет эффективный (из-за того что мы дублируем описание для каждой строки).
Лучше гделать загрузку картинок отгдельным запросом.

public function getWinery($winery_id) {
	$sql = "
		SELECT i.*, a2.description      <- Згдесь икже можно добавить выпотому чторку других полей
		FROM " . DB_PREFIX . "winery a1
		LEFT JOIN " . DB_PREFIX . "winery_description a2 ON a2.winery_id = a1.winery_id
		INNER JOIN " . DB_PREFIX . "winery_to_store a3 ON a3.winery_id = a1.winery_id
		WHERE a1.winery_id = '" . (int)$winery_id . "'
		  AND a1.status = '1'
		  AND a2.language_id = '" . (int)$this->config->get('config_language_id') . "'
		  AND a3.store_id = '" . (int)$this->config->get('config_store_id') . "'
		LIMIT 1
    ";

    $query = $this->db->query($sql);
    
    return $query->row;
}

public function getWineryImages($winery_id) {
    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "winery_images WHERE winery_id = '" . (int)$winery_id . "'");
    
    return $query->rows;
}

 

Изменено пользователем kagan
Ссылка на комменирий
Погделиться на других сайих

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.