【问题标题】:Doctrine2 (Entity vs Repository)Doctrine2(实体与存储库)
【发布时间】:2012-07-08 00:27:53
【问题描述】:

我是使用 Doctrine2 的新手,在实体或存储库中编写自定义函数的最佳位置在哪里?假设我有一个用户实体,我想知道他的年龄。

如果我把函数 getAge 放在我的实体中是非常简单的。但是如果我将函数 getAge 放在我的存储库中,我必须通过 userId 来获取该用户的年龄。我错了吗?实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: model-view-controller model doctrine doctrine-orm


    【解决方案1】:

    通常在使用实体时,您会希望将实体上的所有数据和操作保留在实体本身中,而存储库仅用于获取正确的实体以开始。

    例如,getAge() 和 setAge() 在单个实体中返回/操作数据,因此它们应该进入实体本身,而定位特定年龄的所有用户的理论 getUsersByAge() 将进入存储库。

    【讨论】:

    • 如何从实体访问实体管理器?我必须将其作为参数传递吗?
    • 你没有。您的实体不应该知道 EntityManager。
    • 为什么实体不应该知道EntityManager?请原谅我的无知。
    【解决方案2】:

    希望对你有帮助

    $em = Zend_Registry::getInstance ()->entitymanager;
    $user = $em->getRepository('Model_User')->findOneBy(array( 'user_id' => $userID,
            ));
    $user->getAge();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-08
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      相关资源
      最近更新 更多