Entity в bunlde как реализовать relation без зависимостей?

В Symfony, чтобы реализовать отношение (relation) между сущностями (entity) без явных зависимостей, вы можете использовать аннотации или XML/YAML конфигурацию. Давайте посмотрим оба варианта.

Аннотации:
1. Сначала вам нужно создать две сущности, которые вы хотите связать. Допустим, у нас есть сущности User и Address с отношением OneToOne (один-к-одному).
2. В классе User вы можете создать поле, которое будет представлять связь с сущностью Address, и пометить его аннотацией @ORMOneToOne, указав имя связанной сущности:

    use DoctrineORMMapping as ORM;
    
    /**
     * @ORMEntity
     */
    class User
    {
        // ...
        
        /**
         * @ORMOneToOne(targetEntity="AppEntityAddress")
         */
        private $address;
        
        // ...
    }

3. В классе Address вы также можете создать поле для обратной связи с сущностью User, и также пометить его аннотацией @ORMOneToOne, указав имя связанной сущности и опцию mappedBy, указывающую на поле, которое отвечает за связь с User:

    use DoctrineORMMapping as ORM;
    
    /**
     * @ORMEntity
     */
    class Address
    {
        // ...
        
        /**
         * @ORMOneToOne(targetEntity="AppEntityUser", mappedBy="address")
         */
        private $user;
        
        // ...
    }

XML/YAML конфигурация:
1. Создайте два файла конфигурации для сущностей User и Address, например, User.orm.xml и Address.orm.xml или User.orm.yaml и Address.orm.yaml.
2. В файле конфигурации User добавьте следующий код:

    <doctrine-mapping>
        <entity name="AppEntityUser" table="user">
            <!-- ... -->
            
            <one-to-one field="address" target-entity="AppEntityAddress" inversed-by="user" />
            
            <!-- ... -->
        </entity>
    </doctrine-mapping>

3. В файле конфигурации Address добавьте следующий код:

    <doctrine-mapping>
        <entity name="AppEntityAddress" table="address">
            <!-- ... -->
            
            <one-to-one field="user" target-entity="AppEntityUser" mapped-by="address" />
            
            <!-- ... -->
        </entity>
    </doctrine-mapping>

Используя аннотации или XML/YAML конфигурацию, вы можете избежать явных зависимостей между сущностями и все необходимые связи будут автоматически установлены доктриной при сохранении и загрузке данных.