Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Каталог товаров
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Каталог товаров

Страниц (1): [1]
 

1. lamer6666 - 26 Марта, 2015 - 10:12:52 - перейти к сообщению
Добрый день.
Стоит задача создания каталога товаров следующего рода:
1. Есть группы товаров
2. У каждой группы товаров есть свои свойства (Вес, Ширина, Высота, Глубина)
3. При добавлении подгруппы в какую нибудь группу товаров, подгруппа должна получать все свойства группы родителя, а также иметь возможность иметь свои новые свойства.
(Пример: В группу "ТОВАРЫ" добавили группу "Автомобили", автомобили получают свойства своего родителя "Товары": Вес, Ширина, Высота, Глубина + Марка + Грузоподъемность и т.д.)
4. Любой ТОВАР отнесенный к той или иной группы должен наследовать(иметь) свойства группы родителя.

1. Как реализовать данный подход?
2. Как хранить/читать в SQL свойства групп товаров, и при выборе какого нибудь конкретного ТОВАРА получить все его свойства.
2. caballero - 26 Марта, 2015 - 11:52:03 - перейти к сообщению
я в своей CMS так делал с наследованием. Тут надо удобный механизм работы с иерархией например выборка всех родительских груп.
тогда наследование реализуется просто выборкой иерархи груп для товара. а к каждой групе прикноплены свойства. вот оно все в кучу и собирается. собственно наследования как такового и не надо в нем нет смысла - просто с каждой родительской группы собираются перечень свойст в список и показывается на редактировании товара для присвоения значений. то есть список свойст зависит от родительских груп - вот и получается наследование
3. tuareg - 26 Марта, 2015 - 13:55:40 - перейти к сообщению
caballero пишет:
то есть список свойст зависит от родительских груп - вот и получается наследование
Я так понимаю, что при удалении сво-ва у родителя идем вниз и удаляем это сво-во?
4. caballero - 26 Марта, 2015 - 15:02:08 - перейти к сообщению
никуда не идем
просто удаляем, оно потом просто не появляется

ну можно конечно прибить значения заданные товаром для этого свойства


наследование свойства это не переприсвоение свойства нижестоящим категориям.

просто товары привязаные к этой и нижестоящим категориям будут иметь это свойство
5. lamer6666 - 26 Марта, 2015 - 16:10:00 - перейти к сообщению
[quote=caballero][/quote]
меня смущает в данном решении рекурсивность! Для каждого ТОВАРА рекурсивно выполнять запросы родителей, это сильная нагрузка SQL сервер. А если глубина достигает 10 000, при этом запрашиваем 1000 товаров одним запросом?
6. LIME - 26 Марта, 2015 - 16:21:40 - перейти к сообщению
Иерархия не обязательно рекурсивность
Погугли nested sets
materialized path

а еще можно сделать наборы свойств
все товары включают базовый набор
наборы можно присваивать не только категориям но и отдельным товарам
(Добавление)
А даже если рекурсия... в каком это магазине такая тьма категорий?
7. lamer6666 - 26 Марта, 2015 - 18:10:37 - перейти к сообщению
LIME пишет:
а еще можно сделать наборы свойств
все товары включают базовый набор
наборы можно присваивать не только категориям но и отдельным товарам


Пример можете привести для наглядности?
8. LIME - 26 Марта, 2015 - 18:22:12 - перейти к сообщению
базовый набор: цвет, производитель, SKU ...

набор транспорт: мощность, скорость...
набор кабриолеты: метод съема крыши(вручную/с пинка/с пульта), ...

товары:
Камаз - базовый, транспорт
Maserati GranCabrio - базовый, транспорт, кабриолеты
летняя креативная беседка для курения и пьянства в виде кабриолета - базовый, кабриолеты
9. caballero - 26 Марта, 2015 - 23:32:54 - перейти к сообщению
Цитата:
меня смущает в данном решении рекурсивность! Для каждого ТОВАРА рекурсивно выполнять запросы родителей, это сильная нагрузка SQL сервер. А если глубина достигает 10 000, при этом запрашиваем 1000 товаров одним запросом?


нет рекурсивности - использую materialized path

и такие запросы с категориями на практике не понадобятся - на фига выбирать 1000 товаров со всей иерархией
тем более не бывает такой глубины.

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

 

Powered by ExBB FM 1.0 RC1