将实体映射到ID,将ID映射到实体

问题描述 投票:-1回答:2

正如我在标题中所说,我想将一个对象转换为一个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转换为一个对象。通常我会处理实体关系,但是在这种情况下,我不知道其他...

symfony orm doctrine-orm doctrine mapping
2个回答
0
投票

您可以尝试类似的方法,但是我没有对此进行测试。您还可以使用主义的postLoad和postPersist / postUpdate事件将您的User实体转换为整数然后返回。


0
投票

我找到了一个合适的解决方案,而没有修改任何类来注入一些服务。类型映射类会触发事件,并且转换是在外部处理的。

© www.soinside.com 2019 - 2024. All rights reserved.