Нужен совет!)) есть товары - модели и оферы, к примеру https://price.ru/planshety/?brand_id=353
модель - карточка товара у которой есть торговые предложения (оферы)
офер - товарное предложение
таблица для них одна отличите в том что у модели parent_id = 0
теоретически ничто не мешает пользоваться одним обьектом, но почему то, интуитивно мне кажется что все же надо разделить их))) так же есть предложение что данными типы не ограничится, появятся зависимости
вариант модели - разновидность модели
- модель - https://market.yandex.ru/product/172768 ... ext=search
- разновидности - https://market.yandex.ru/product/172768 ... &onstock=1
- оферы разновидностей - https://market.yandex.ru/product/172768 ... &onstock=1
вариант офера - разновидность оффера
Но возникает множество вопросов
- как выставить релевантном порядке к примеру по цене список в котором есть и модели и оферы
- как фильтровать список в котором есть и модели и оферы
- стоит ли разделать модели
с ценами есть два варианта (так как и у модели и у офера могут быт разновидности и их цены зависят от потомков) - делать запросы ко всем потомкам в реалтайме, но запрос может оказаться очень жирным или тем же кроном делать пересчет, но это как то сомнительное решение, да и задачу с фильтрации по тем же свойствам не решает
2 модели на одной таблице
-
- Сообщения: 179
- Зарегистрирован: 2018.02.05, 13:41
- Контактная информация:
Re: 2 модели на одной таблице
Делаете три таблицы.
1. товар - общие атрибуты
2. модель - ID товара и атрибуты модели.
3. офер - ID товара и атрибуты офера.
Поэтому рекомендую разделять классы сопоставляя с бизнес-требованиями. Если у вас по логике бизнеса "модель" и "офер" - это разные штуки, имеющие собственные поведения, то нужно разделять.
Самый простой признак, что вам нужно разделять классы, если в вашем коде появляются подобные условия:
P.S. Разделение можно и в пределах одной таблицы замутить, но на мой взгляд, это так себе вариант:
https://github.com/samdark/yii2-cookboo ... ritance.md
1. товар - общие атрибуты
2. модель - ID товара и атрибуты модели.
3. офер - ID товара и атрибуты офера.
Если цена в общей таблице, то банальная сортировка, если в дочерних, то джойн и опять сортировка, чуть сложнее.- как выставить релевантном порядке к примеру по цене список в котором есть и модели и оферы
Аналогично описанному выше - вам доступны поля общей таблицы сразу, дочерние через джойн. Ничего не мешает приджойнить обе таблицы и получить в распоряжение условий SQL все колонки и моделей и оферов.- как фильтровать список в котором есть и модели и оферы
В смысле, делать разные классы для оферов и моделей? Это вам решать ) Но как правило подход "всё в одном классе" ведёт к очень быстрому переусложнению кода.- стоит ли разделать модели
Поэтому рекомендую разделять классы сопоставляя с бизнес-требованиями. Если у вас по логике бизнеса "модель" и "офер" - это разные штуки, имеющие собственные поведения, то нужно разделять.
Самый простой признак, что вам нужно разделять классы, если в вашем коде появляются подобные условия:
Код: Выделить всё
if ($item->isOffer) {
...
}
if ($item->isModel) {
...
}
https://github.com/samdark/yii2-cookboo ... ritance.md