在symfony中动态扩展用户实体

时间:2016-08-17 14:15:25

标签: php reflection doctrine symfony traits

我有以下情况:

  • 我的项目有AppBundleUser实体。
  • 其他捆绑包会添加更多实体,例如AddressTodoProjectWhatEver
  • 这些实体必须属于User,以便我可以致电$user->getAddresses()$user->getTodos()$user->addProject()$user->setWhatEvers()
  • 这些捆绑包必须保持"可插拔"因此User实体并不一定了解它们,我无法将todos及其getter / setter等属性直接添加到User实体中。

我想到了反思,魔术吸气剂/制定者,特质可能是什么样的方法,但没有什么能满足我的需要。

我还考虑生成 User实体,但这意味着我每次启用或禁用捆绑包时都必须重新生成它,并且每次都必须更新数据库。

也许有一种完全不同的方法?

1 个答案:

答案 0 :(得分:1)

无法评论所以我必须回答。实体键值方法怎么样?

您可以制作一个通用的getter,用于过滤与第三方实体保持关系的中间实体。

我个人不喜欢它,因为它很难维护。

有一个用于标记内容的捆绑包,使用此方法。您可以使用标记(在您的情况下为用户实体)标记(关联)任何实体(在本例中为您的第三方实体)