加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 声明Doctrine Embeddable是否可为空

发布时间:2020-05-26 02:20:01 所属栏目:PHP 来源:互联网
导读:假设我有两个Doctrine实体,Person和Company.两者都有一个接受地址值对象的地址字段.根据业务规则,Company :: Address是必需的,而Person :: Address可以为null. Doctrine 2.5提出了the Embeddable type,它显然是以价值对象为基础构建的,实际上,我认为它是我案

假设我有两个Doctrine实体,Person和Company.两者都有一个接受地址值对象的地址字段.根据业务规则,Company :: Address是必需的,而Person :: Address可以为null.

Doctrine 2.5提出了the Embeddable type,它显然是以价值对象为基础构建的,实际上,我认为它是我案例的完美解决方案.

但是,有一件事我不能做:声明Person :: Address可以为空,而Company :: Address不是. Embeddable的字段本身存在布尔可空属性,但当然这适用于嵌入地址的每个实体.

有人知道我是否遗漏了某些东西,或者这是否是由于技术限制,是否有解决方法等?现在,我看到的唯一解决方案是将所有Embeddable字段声明为nullable:true并在我的代码中处理约束.

Does anybody know if I’m missing something

Doctrine 2不支持Nullable embeddables.预计它们将用于版本3.

if there’s a workaround

解决方案是“不在那里使用嵌入式,并[[]]用嵌入式替换字段[手动]”(@Ocramius)

例:

class Product
{
    private $sale_price_amount;
    private $sale_price_currency;

    public function getSalePrice(): SalePrice
    {
        if (is_null($this->sale_price_currency)
            || is_null($this->sale_price_amount)
        ) {
            return null;
        }

        return new SalePrice(
            $this->sale_price_currency,$this->sale_price_amount
        );
    }
}

(Harrison Brown小节)

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读