Ответ 1
Для дальнейшего использования это можно решить с помощью разрешения целевой сущности.
Дополнительную информацию можно найти в Документах по Symfony.
Шаги довольно сложны:
-
Создайте интерфейс в своем пакете для объекта
User
namespace Acme/UserBundle/Model; interface UserInterface { // public functions expected for entity User }
-
Сделайте свой базовый объект
User
реализованным интерфейсомnamespace Acme/UserBundle/Entity; /** * @ORM\Entity */ class User implements UserInterface { // implement public functions }
-
Создавайте отношения как обычно, но используя интерфейс
namespace Acme/InvoiceBundle/Entity; /** * @ORM\Entity */ class Invoice { /** * @ORM\ManyToOne(targetEntity="Acme\UserBundle\Model\UserInterface") */ protected $user; }
-
Настройте слушателя, добавив следующее в config.yml
doctrine: # .... orm: # .... resolve_target_entities: Acme\UserBundle\Model\UserInterface: Acme\UserBundle\Entity\User
Если вы хотите настроить объект User
для своего текущего приложения
-
Расширить из класса
User
или реализоватьUserInterface
namespace Acme/WebBundle/Entity; use Acme/UserBundle/Entity/User as BaseUser; /** * @ORM\Entity */ class User extends BaseUser { // Add new fields and functions }
-
Настройте слушателя соответственно
doctrine: # .... orm: # .... resolve_target_entities: Acme\UserBundle\Model\UserInterface: Acme\WebBundle\Entity\User