【发布时间】:2020-01-27 17:29:46
【问题描述】:
正如我在标题中所说,我想将一个对象转换为一个 ID(int/string)并从 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 获得的事件管理器。或者有没有更好的方法?
【问题讨论】:
-
对不起,但不清楚你要完成什么你不能完成的事情。在您的“伪代码”中,您将
User实例传递给$meta。有什么问题? -
您是否阅读了我下面的问题?我需要将数据库值
user:IAmUserBobAndThisIdMyId转换为实体的“魔法”,我正在寻找一种将这种“魔法”注入我的映射类型对象的好方法。 -
是的,我读过。我问是因为不清楚,不是因为我没有读过。目前还不清楚。我建议编辑您的代码,以便清楚您想要发生的事情,因为到目前为止它并不明显。祝你好运。
-
谢谢!我已经编辑了我的问题。我认为这并不难,但我想避免丑陋的黑客攻击。
标签: symfony orm doctrine-orm doctrine mapping