使用Doctrine Embeddables时,你必须在属性上声明一个类......
/** @Entity */
class User
{
/** @Embedded(class = "Address") */
private $address;
}
/** @Embeddable */
class Address
{
}
如果您的属性拥有实现接口的类,会发生什么。所以例如...我有一个名为Monthly或Weekly的类,它实现了一个名为RecurrenceInterface的接口,我的实体看起来像这样......
/** @Entity */
class Subscription
{
/** @var RecurrenceInterface */
private $recurrence;
}
/** @Embeddable */
class Monthly implements RecurrenceInterface
{
}
如何将实现接口的内容声明为Embeddable?
谢谢!
答案 0 :(得分:0)
医生教程说:“可嵌入对象是不是实体本身的类”。类,没有别的。.
作为解决方案之一,您可以像这样将序列化的对象存储在您的实体中
PartitionId
在这种情况下,学说 /**
* @var Settings\SettingsInterface
* @ORM\Column(name="settings", type="object")
*/
private $settings;
并不关心存储对象的序列化/反序列化。
此外,您在类中的setters,getters,construct等上仍具有类型提示。
t cares what you store there, and you don
此解决方案有许多明显的缺点,例如,在更改可序列化对象时