【问题标题】:Doctrine 2: reattaching entities through value objects原则 2:通过值对象重新附加实体
【发布时间】: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


    【解决方案1】:

    据我所知,目前没有记录的方法可以做到这一点。

    【讨论】:

    • 学说团队有一个 WIP 用于实现值对象支持:github.com/doctrine/doctrine2/pull/634
    • @YohanG。是的,我已经看到了,尽管它与我正在寻找的内容略有不同。但无论如何,原生 VO 支持会很棒!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 2016-07-14
    • 2017-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多