php - 实体内部的 DDD 和 Doctrine 映射

标签 php zend-framework2 doctrine domain-driven-design

我想在领域驱动设计方法中使用 Doctrine 进行数据持久化。但困扰我的是关联映射应该在实体内部。就纯 DDD 而言,这不是一种不好的做法吗?因为在我进入持久性问题之前,我的域实体非常干净,现在它们的属性中有很多注释。像这样:

<?php

namespace Domain\Model;

use Doctrine\ORM\Mapping as ORM;

/**
 * User
 *
 * @ORM\Table(name="user")
 * @ORM\Entity
 */
class User
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="SEQUENCE")
     * @ORM\SequenceGenerator(sequenceName="user_id_seq", allocationSize=1, initialValue=1)
     * @ORM\Column(type="integer")
     */
    private $id;  

    ...

除了使用这些评论,我还必须拥有 use Doctrine\ORM\Mapping as ORM; .这样,基础设施就不会与域保持分离。

有没有办法将此映射移动到配置文件?我正在使用 ZF2。

最佳答案

是的,从 DDD 的角度来看,这很糟糕。有两种解决方案:

  • 使用外部映射机制,例如@Cerad 描述的机制。这将域模型从持久性问题中解放出来,但管理起来也可能很痛苦。毕竟,许多项目出于某种原因放弃了基于 XML 的持久性配置。
  • 创建一个单独的持久性模型。这个模型非常简单,根本不包含逻辑,只包含数据。然后,创建一个映射器在两者之​​间进行映射。
  • 关于php - 实体内部的 DDD 和 Doctrine 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33127460/

    相关文章:

    php - 未捕获的异常 'RuntimeException' 消息“无法加载 ZF2 - WAMP 错误

    php - Azure 上的自定义 PHP 扩展

    php - 不使用 GROUP_CONCAT 的原因?

    php - 递归 PHP 正则表达式

    php - 在php中更改日期格式

    validation - Zend Framework Validate 字段是 1 到 5 之间的整数

    php - 自动完成城市列表查询需要太多时间来加载巨大的城市表

    zend-framework - 操作码 (APC/XCache)、Zend、Doctrine 和自动加载器

    php - 如何在 symfony2 中连接多个表?

    php - SQL 语法错误/无效查询 - WAMP、phpMyAdmin