Model view controller Doctrine2(实体与存储库)

Model view controller Doctrine2(实体与存储库),model-view-controller,model,doctrine,doctrine-orm,Model View Controller,Model,Doctrine,Doctrine Orm,我刚刚使用Doctrine2,在实体或存储库中编写自定义函数的最佳位置在哪里?假设我有一个用户实体,我想知道他的年龄 如果我把函数getAge放在我的实体中,它是非常直接的。但是如果我将函数getAge放在我的存储库中,我必须传递userId来获取该用户的年龄。我错了吗?实现这一目标的最佳方法是什么 通常在处理实体时,您希望将实体上的所有数据和操作都保存在实体本身中,而存储库仅用于获取正确的实体 例如,getAge()和setAge()返回/操作单个实体中的数据,因此它们应该放在实体本身中,而定

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


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

通常在处理实体时,您希望将实体上的所有数据和操作都保存在实体本身中,而存储库仅用于获取正确的实体


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

希望这会有所帮助

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

如何从实体访问实体管理器?我必须把它作为参数传递吗?你不需要。您的实体不应该知道EntityManager。为什么实体不应该知道EntityManager?请原谅我的无知。