Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Перевод атрибутов


rsavchak

Recommended Posts

Подскажите пожалуйста такой момент: Есть два языка (Рус, Укр.), как скопировать все атрибуты с Рус. На Укр чтобы в дальнейшем в БД перевести их на Укр язык. Или может есть решения для пакетного перевода атрибутов ?

Надіслати
Поділитися на інших сайтах





INSERT IGNORE INTO oc_product_attribute SELECT `product_id`, `attribute_id`, [id укр. языка], `text` FROM oc_product_attribute WHERE `language_id` = [id рус. языка]

Это я так понимаю сделать запрос к БД ?

id укр. языка и id рус. языка - как правильно вставить (значение у меня 1 и 3) ?

Змінено користувачем rsavchak
Надіслати
Поділитися на інших сайтах

По идее все должно было добавиться само при добавлении языка. Не знаю что у вас пошло не так. 

$from_language_id = 3; //Рус
$to_language_id = 1; //Укр

// Attribute
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "attribute_description WHERE language_id = '" . (int)$from_language_id . "'");

foreach ($query->rows as $attribute) {
	$this->db->query("INSERT IGNORE INTO " . DB_PREFIX . "attribute_description SET attribute_id = '" . (int)$attribute['attribute_id'] . "', language_id = '" . (int)$to_language_id . "', name = '" . $this->db->escape($attribute['name']) . "'");
}

// Attribute Group
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "attribute_group_description WHERE language_id = '" . (int)$from_language_id . "'");

foreach ($query->rows as $attribute_group) {
	$this->db->query("INSERT IGNORE INTO " . DB_PREFIX . "attribute_group_description SET attribute_group_id = '" . (int)$attribute_group['attribute_group_id'] . "', language_id = '" . (int)$to_language_id . "', name = '" . $this->db->escape($attribute_group['name']) . "'");
} 

Этот код вырезан из модели административной панели localisation/language. Перед применением сделайте бекап БД.

Надіслати
Поділитися на інших сайтах

По идее все должно было добавиться само при добавлении языка. Не знаю что у вас пошло не так. 



$from_language_id = 3; //Рус
$to_language_id = 1; //Укр

// Attribute
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "attribute_description WHERE language_id = '" . (int)$from_language_id . "'");

foreach ($query->rows as $attribute) {
	$this->db->query("INSERT IGNORE INTO " . DB_PREFIX . "attribute_description SET attribute_id = '" . (int)$attribute['attribute_id'] . "', language_id = '" . (int)$to_language_id . "', name = '" . $this->db->escape($attribute['name']) . "'");
}

// Attribute Group
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "attribute_group_description WHERE language_id = '" . (int)$from_language_id . "'");

foreach ($query->rows as $attribute_group) {
	$this->db->query("INSERT IGNORE INTO " . DB_PREFIX . "attribute_group_description SET attribute_group_id = '" . (int)$attribute_group['attribute_group_id'] . "', language_id = '" . (int)$to_language_id . "', name = '" . $this->db->escape($attribute_group['name']) . "'");
} 

Этот код вырезан из модели административной панели localisation/language. Перед применением сделайте бекап БД.

Вы меня неправильно поняли. Сами поля есть. Только я хочу все атрибуты с рус. скопировать в укр. поля. Ваш код не помог - ошибка.

SQL запрос: 

$from_language_id = 1;


Ответ MySQL:  
 #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '$from_language_id = 1' at line 1
Надіслати
Поділитися на інших сайтах



INSERT IGNORE INTO oc_product_attribute SELECT `product_id`, `attribute_id`, [id укр. языка], `text` FROM oc_product_attribute WHERE `language_id` = [id рус. языка]

Запрос выполнил так

INSERT IGNORE INTO product_attribute SELECT `product_id`, `attribute_id`, 3 , `text` FROM product_attribute WHERE `language_id` = 1

Но пришел пустой ответ и атрибуты не скопировало. Подскажите пожалуйста что я не так сделал. Таблица у меня без префикса.

Надіслати
Поділитися на інших сайтах

 

а выполните запрос





SELECT count(*), language_id FROM product_attribute GROUP BY 2

Запрос выполнил, но ничего не поменялось т.е. атрибуты не скопировались.

Змінено користувачем rsavchak
Надіслати
Поділитися на інших сайтах

тогда странно. этот запрос 

INSERT IGNORE INTO product_attribute SELECT `product_id`, `attribute_id`, 3 , `text` FROM product_attribute WHERE `language_id` = 1

должен был новые поля добавить

 

 а выполните 

desc product_attribute
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.