正如我在标题中所说,我想将一个对象转换为一个ID(整数/字符串),然后再从ID转换为一个对象。通常,我会处理实体关系,但是在这种情况下,我不知道其他实体/捆绑商品,它应该独立运行。
我想,我可以为此使用原则映射类型,但是如何注入我的自定义实体加载器?因此,也许我可以使用回调来获取数据。
那是我的主意(伪代码):
class User {
public function getId() { return 'IAmUserBobAndThisIdMyId'; }
}
class Meta {
private $user; // <== HERE I NEED THE MAGIC
public function setUser($user) { $this->user = user; }
}
$user = new User();
$meta = new Meta();
$meta->setUser($user);
$em->persist($meta); // <== HERE THE MAPPING TYPE SHOULD CONVERT THE ENTITY
知道我想要这样的数据库中的实体:user:IAmUserBobAndThisIdMyId
倒退:
$meta = $repository->findOneById(1); // HERE I NEED THE MAGIC AGAIN
$user = $meta->getUser();
echo $user->getId();
// output: IAmUserBobAndThisIdMyId
到目前为止,非常容易...但是现在我需要一些逻辑和数据库访问权限来还原该实体。加载很容易,但是如何将其注入到我的映射类型类中?>?
我读了doctrine documentation,我想知道是否可以使用通过参数从AbstractPlatform $platform
中获得的事件管理器。还是有更好的方法?
正如我在标题中所说,我想将一个对象转换为一个ID(整数/字符串),然后再从ID转换为一个对象。通常我会处理实体关系,但是在这种情况下,我不知道其他...
您可以尝试类似的方法,但是我没有对此进行测试。您还可以使用主义的postLoad和postPersist / postUpdate事件将您的User实体转换为整数然后返回。
我找到了一个合适的解决方案,而没有修改任何类来注入一些服务。类型映射类会触发事件,并且转换是在外部处理的。