2011-12-30 65 views
4

我与学说2个工作,并有Address值对象:原则2:通过价值重新连接实体对象

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); 

但我想知道如果我错过了在学说一个功能,可以让我直接合并VO呢?

回答

1

据我所知,目前没有文件记录的方式来做到这一点。

+0

原则小组为实施价值对象支持提供WIP:https://github.com/doctrine/doctrine2/pull/634 – 2013-06-09 16:48:25

+0

@YohanG。是的,我已经看到了,虽然它与我所寻找的略有不同。无论如何,本地VO支持将会非常棒! – Benjamin 2013-06-09 17:57:03