2016-07-09 113 views
0

我正在尝试为Symfony项目创建可重用的包。如何将实体从外部包映射到用户实体

这个捆绑有一个巨大的模型映射,但我遇到一个概念性的问题:

如何,与Symfony的,我可以结合我的实体之一,利用该包的人的最终应用的用户实体?

我可以使用一些配置来获取用户类并动态创建这两个类之间的映射,还是有更好的方法来处理这个问题?

谢谢社区:)!

+3

我建议看看其他大型捆绑包是如何做类似的事情的。一个简单的例子可能是[FOSCommentBundle](https://github.com/FriendsOfSymfony/FOSCommentBundle)。基本上创建抽象基础实体(使用映射数据),然后使用该捆绑的人员将在其应用中扩展。 – JimL

+0

是的,我知道这种做事的方式!我会尽量让最终用户没有大的限制! – Kern

+2

我明白了,但保持其与其他已知捆绑类似,也可以轻松采用捆绑包。另外,扩展'YourBundle:BaseEntity'的'AppBundle:Entity'使得它更清楚发生了什么。有些人喜欢把“魔法”的数量降到最低^^ – JimL

回答

0

其实我想是这样的:https://www.theodo.fr/blog/2013/11/dynamic-mapping-in-doctrine-and-symfony-how-to-extend-entities/

这无疑是解决方案,我将应用到我的项目。

经过几天的发展,我注意到对于我创建的每个新实体,我必须将它映射到该包的“最终用户可扩展”类。如果我告诉最终用户将他自己的Project类映射到他自己的User类,我稍后必须告诉他“映射到Project类的每个类都必须手动映射”。

我认为我们都不想实现一个外部包并覆盖其内部模型的每个部分。使用事件订阅者的动态映射避免了它!

Ty for your help,I hope this note will help some other lads:D!