Скажите, что у меня есть система с продуктами, которые могут иметь различные варианты оформления (или печати).'name' property in Doctrine 2
Большинство продуктов будут иметь одинаковый диапазон названий вариантов печати, но некоторые могут быть уникальными для одного продукта.
Например, я мог бы иметь крышку, которая может иметь три различных варианта отделки:
- Unbranded
- One Color Print
- вышивки
Моя цель пытается свести к минимуму украшения имена опций, созданные пользователями admin, поэтому они всегда одинаковы. И.Е. Я не хочу, чтобы некоторые варианты оформления назывались «1 цветная печать», а затем еще одна «Одноцветная печать».
Так что мой план в пользовательском интерфейсе состоит в том, чтобы сбрасывать существующие имена вариантов декораций, а также давать им возможность добавить новый (для случаев с краем).
Однако каждый вариант оформления имеет различные другие данные, такие как стоимость установки, время производства и т. Д., Которое зависит от продукта.
Например, у Hat1 и Hat2 есть опция украшения вышивки, но стоимость установки Hat1 составляет 49 долларов США, а стоимость установки Hat2 составляет всего 35 долларов.
Итак, мои вопросы: какой лучший способ структурировать сущности? Должен ли я иметь три объекта: Product, DecorationOption и DecorationOptionName? Или только два объекта: продукт и украшение?
Пожалуйста, смотрите мои примеры кода для дальнейшего понимания:
Отлично! Считаете ли вы, что это было бы необходимо, если бы не было дополнительной информации о таблице соединений? Например, у продукта есть несколько изображений, все из которых будут помечены (Front, Back, Top и т. Д.), Но есть некоторые продукты, которые будут иметь метки кромки, но я хочу, чтобы именование было максимально согласованным. Взгляните сюда: http://pastie.org/1268445 – Cobby
Ну, я думаю, что ImagePosition не является таблицей объединения ... но вы получаете идею/вопрос, я надеюсь. – Cobby
Трудно сказать для каждого примера.В принципе, если вам нужен объект для выполнения бизнес-логики, у вас, вероятно, должен быть объект для него. Если у вас есть сложный набор логики, поддерживающий эту систему меток, создайте сущность. Если нет, вы, вероятно, согласитесь с двумя таблицами. Кроме того, у Doctrine есть ассоциация @ManyToMany, которая использует таблицу соединений без необходимости создания третьего объекта. –