【发布时间】:2012-01-30 21:24:07
【问题描述】:
我正在使用 Doctrine 2,并且有一个 Address 值对象:
class Address
{
/** @var string */
protected $street;
/** @var string */
protected $city;
/** @var Application\Domain\Model\Country */
protected $country;
}
我需要将此 Address 存储在 PHP 会话中(序列化),然后再检索它。然后,当我检索此值对象时,我希望将 Country 对象合并到当前的实体管理器中,以便此国家/地区与当前的工作单元同步。
是否可以将此值对象“合并”到当前的实体管理器,就像我在具有 cascade="merge" 的常规实体上所做的那样,以将 Country 实例替换为当前实例?
我显然可以手动创建另一个 Address 并手动合并 Country:
$address = $_SESSION['address'];
$country = $em->merge($address->getCountry());
$address = new Address($address->getStreet(), $address->getCity(), $country);
但我想知道我是否缺少 Doctrine 中允许我直接合并 VO 的功能?
【问题讨论】:
标签: php orm doctrine-orm persistence entitymanager