这是我的问题; 假设您创建了从一个捆绑到另一个捆绑的关系 (在这种情况下,一个用户=>很多通知) (UserBundle => NotificationsBundle)
/**
* @ORM\OneToMany(targetEntity="Gabriel\NotificationsBundle\Entity\Notification", mappedBy="notificationOwner")
*/
private $notifications;
问题:当Notificationsbundle从AppKernel中删除时,上面的类会丢失,并且整个应用程序崩溃,如果所有实体都被移动到同一个包中,则不会发生这种情况。 只要存在此关系,您将永远无法再次禁用该包:/
有没有办法解决这个问题“symfony方式”
答案 0 :(得分:1)
Symfony Best Practices页面建议将所有实体存储在" main" bundle(通常是AppBundle)或直接在/ src目录中创建特定的实体文件夹结构。
所以:
symfony2-project/
├─ ...
└─ src/
└─ AppBundle/
└─ Entity/
├─ Comment.php
├─ Post.php
└─ User.php
或者:
如果你更高级,你当然可以将它们存放在你自己的下面 src中的命名空间/.
严格来说,捆绑包应该是完全独立的,因此通常不应直接引用另一个捆绑包的实体,否则它们会紧密耦合,从而导致您遇到的问题。
对于私有项目(即您不发布其他人使用的捆绑包),可以使用多个紧密耦合的捆绑包,但仍然实体应该全部放在主AppBundle或它们自己的捆绑/文件夹结构中根据上面的Symfony最佳实践页面。