2015-06-06 4 views
1

Вот моя проблема; Допустим, вы создаете связь от одного пучка к другому (В этом случае один пользователь => много уведомлений) (UserBundle => NotificationsBundle)Неправильно ли переместить все объекты Doctrine2 в один комплект Bundle?

/** 
* @ORM\OneToMany(targetEntity="Gabriel\NotificationsBundle\Entity\Notification", mappedBy="notificationOwner") 
*/ 
private $notifications; 

Проблема: Когда Notificationsbundle получает удаляется из AppKernel , класс выше потеряется, и все приложение выйдет из строя, это не произойдет, если все объекты будут перемещены в один и тот же пакет. Как только эта связь существует, то вы никогда не будете иметь возможности отключить пакет снова:/

Есть ли способ решить эту проблему «в Symfony пути»

ответ

1

Symfony Best Practices страница рекомендует хранить все объекты в вашем «основной» пакет (обычно AppBundle) или создание структуры папок конкретных объектов непосредственно в каталоге/src.

Так как:

symfony2-project/ ├─ ... └─ src/ └─ AppBundle/ └─ Entity/ ├─ Comment.php ├─ Post.php └─ User.php

Или:

Если вы более продвинутый, вы можете, конечно, хранить их под собственным имен в SRC /.

Строго говоря, пучки должны быть полностью автономными и поэтому обычно не должны непосредственно ссылаться на объекты другого связки, иначе они станут тесно связанными, что приведет к проблеме, с которой вы столкнулись.

Для частных проектов (то есть, где вы не публикуете пучки для других пользователей), все в порядке, чтобы иметь несколько тесно связанных пакетов, но все же объекты должны находиться в главном AppBundle или их собственной структуре папок/папок в соответствии с на приведенной выше странице рекомендаций Symfony.