Реалізовано єдине сховище списку властивостей для інформаційних систем, інтернет-магазину, структури сайту і користувачів сайту з поділом зберігання значень в декількох таблицях. Всі властивості зберігаються в таблиці properties. розділи додаткових властивостей в таблиці property_dirs.
Значення додаткових властивостей зберігаються в 6 різних таблицях в залежності від типу властивості: property_value_datetimes, property_value_files, property_value_floats, property_value_ints, property_value_strings, property_value_texts.
linkedObjects
Для доступу до списку додаткових властивостей використовуються спеціальні моделі (ми називаємо їх linkedObject) з налаштованими зв'язками для таблиць властивостей, успадкованих від відповідних моделей. Наприклад, Shop_Item_Property_List_Model успадковано від Shop_Model.
linkedObjects властивостей груп інформаційної системи
linkedObjects властивостей елементів інформаційної системи
linkedObjects властивостей груп магазину
linkedObjects властивостей товарів магазину
linkedObjects замовлень магазину
linkedObjects структури сайту
linkedObjects користувачів сайту
Отримання списку додаткових властивостей через linkedObject
Отримання списку додаткових властивостей товарів. доступних групі магазину
Отримання списку розділів додаткових властивостей
Отримання об'єкта додаткового властивості
Отримання об'єкта додаткового властивості за його ідентифікатором (див. ORM)
Отримання значень додаткових властивостей
Так як кожне додаткове властивість може мати кілька значень, то в масиві значень може бути нуль, один або кілька значень.
Отримання масиву значень додаткового властивості за значенням властивості.
Залежно від типу додаткового властивості об'єкт значення може мати атрибути:
- id - первинний ключ;
- property_id - ідентифікатор властивості;
- entity_id - ідентифікатор об'єкта, для якого вказано значення;
- value - значення.
для властивостей типу файл:
- id - первинний ключ;
- property_id - ідентифікатор властивості;
- entity_id - ідентифікатор об'єкта, для якого вказано значення;
- file - ім'я файлу в файлової системі;
- file_name - оригінальне ім'я файлу;
- file_description - опис файлу;
- file_small - ім'я файлу малого зображення в файлової системі;
- file_small_name - оригінальне ім'я файлу малого зображення;
- file_small_description - опис файлу малого зображення.
Отримання всіх значень властивостей об'єкта через getPropertyValues ()
Додатково моделі груп і елементів інформаційних систем, груп та товарів магазину, структури сайту і користувачів сайту мають метод getPropertyValues (). повертає всі значення додаткових властивостей цього об'єкта.
Створення значення додаткового властивості
З використанням методу createNewValue () отримаємо об'єкт нового значення додаткового властивості, який залежить від типу додаткового властивості. Аргументом передається ідентифікатор об'єкта, для якого створюється значення.
Зміна або установка значення додаткового властивості, якщо значення не було
Вказівка директорії розміщення для файлових властивостей
Додаткове властивість не знає про місце розміщення файлів, що вимагає вказівку таких директорій для значення властивості.
Приклад вказівки для структури сайту
для інформаційної групи
для інформаційного елемента
для групи магазину
Дозвіл властивості товару для групи магазину
В інтернет-магазині для кожної групи товарів вказуються властивості товарів, доступні товарів цієї групи. Включення властивості товарів $ oProperty для групи магазину $ oShop_Group:
Перенесення значень властивостей з однієї таблиці в іншу при зміні типу властивості
Значення властивостей зберігаються в таблицях, що залежать від виду властивості. У разі зміни типу властивості може знадобитися перенести значення з однієї таблиці в іншу. Розглянемо приклад зміни типу властивості з рядка (property_value_strings) на велике поле для (property_value_texts) для властивості номер 17. Змінивши тип властивості перенесемо значення властивості з таблиці рядків в таблицю текстів:
Перевіряємо наявність значень з новим типом, якщо все нормально перенеслося, то видаляємо значення в таблиці попереднього типу:
Чи не знайшли відповідь на своє питання в документації? Направте звернення в або онлайн чат.