我需要将一些不可变的字段移到单独的类中,但我并不真的想使用“join”,因为我每次都需要将所有数据放在一起。
有没有办法把一些实体属性作为Map到同一个表中的类?
类似于:
/**
* @ORM\Entity
*/
class User {
/**
* @var int
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
...
/**
* @var Address
* @ORM\... ??
*/
protected $address
}
/**
* @ORM\ValueObject ??
*/
class Address {
/**
* @var string
* @ORM\Column(type="string", name="address_zipcode", length=12)
*/
protected $zipcode;
/**
* @var string
* @ORM\Column(type="string", name="address_country_iso", length=3)
*/
protected $countryIso;
...
}
字符串
表结构为:
CREATE TABLE User (
`id` INT(11) NOT NULL auto_increment,
`address_zipcode` VARCHAR(12) NOT NULL,
`address_country_iso` VARCHAR(3) NOT NULL,
PRIMARY KEY (`id`)
);
型
4条答案
按热度按时间xmjla07d1#
你问的是价值对象。
在Jira DDC-93中有一个开放的问题需要添加支持。它目前标记为在2.5版本中解决,该版本刚刚在Beta中发布。
krcsximq2#
如果你想存储没有join的对象:
字符串
它将自动序列化/重新序列化到文本字段
http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/types.html
并添加setter与类型你想存储
型
地址类不需要任何@ORM注解
ogq8wdun3#
就像你说的那样。
在
User
中添加@PreUpdate和@PostLoad钩子。字符串
i7uq4tfw4#
Doctrine在
2.x
版本中引入了值对象的概念。新属性/注解的名称是
Embeddable
和Embedded
。第一个用于标记值对象类,第二个用于实际将值对象注入父实体。下面是我最初问题的更新代码片段:
字符串
资源: