我想要做的基本上是实体A,其字段类型与实体B或C相关,基于字段类型
的值例如:产品如果类型饮料与 DrinkOptions 实体相关,但是如果类型食品与 FoodOptions 实体
在这种情况下,有没有优雅的解决方案可以正常工作? 这是我认为它会起作用的,但它不会......
答案 0 :(得分:0)
可能的解决方案可能是使用单个表继承。可能不是最好的解决方案,但它可以满足您的特定需求。
<?php
namespace MyProject\Model;
/**
* @Entity
* @InheritanceType("SINGLE_TABLE")
* @DiscriminatorColumn(name="discriminator", type="string")
* @DiscriminatorMap({"drink" = "DrinkOption", "food" = "FoodOption"})
*/
class Option
{
// ...
}
/**
* @Entity
*/
class FoodOption extends Option
{
// ...
}
/**
* @Entity
*/
class DrinkOption extends Option
{
// ...
}
然后,您甚至可以通过更改&#34;鉴别器&#34;来切换类型。列。
答案 1 :(得分:0)
我认为最简单的方法是让多个产品实体具有继承性
Like Product(parent) - &gt; foodProduct(child)或DrinkProduct()。
通过这种方式,您可以将产品链接到普通的其他实体(如价格或品牌)以及食品,饮料,烟雾等的特定链接......
TargetSubVariant
如果它仍然不合适,你将不得不找到一些设计模式