я решил проблемы, читая сегрегированных сообщения, так что положить здесь решение для сообщества (пожалуйста, дайте мне знать, если это не рекомендуемый путь и правильный путь, если нет):
Моя цель состояла в том, чтобы создать oneToMany доктрину отношения между
Sylius\Component\Core\Model\User
И
Acme\Bundle\Entity\UserData
, которую я создал. В основном для каждого пользователя может быть несколько экземпляров пользовательских данных, указывающих обратно на этого пользователя. Для этого сначала я следил за документами в sylius documentation , чтобы переопределить класс пользователя sylius, который представляет собой расширенный класс fosuserbundle.
На каком-то этапе я постоянно получаю ошибку [Doctrine\DBAL\Schema\SchemaException]
The table with name 'astrohealing_dev.sylius_user' already exists.
на основе предложений Winzou в: Для того, чтобы исправить эту ошибку, я изменил местоположение класса пользователя в sylius.yml (Sylius/Bundle/CoreBundle/Ресурсы/конфигурация/приложение/sylius .yml), которая является частью основного пучка и объявил свой собственный класс в качестве пользовательской модели, как это:
Это разрешило таблицу sylius_user существует ошибка
Но потом я получил другую ошибку:
[Symfony \ Component \ Config \ Definition \ Exception \ ForbiddenOverwriteException]
Путь конфигурации "sylius_core.driver" не может быть перезаписан.Вы должны определить все параметры для этого пути, и любой из его подкатегорий
-paths в одном разделе конфигурации.
Далее я закомментирована диск: доктрина/ОРМ линия для соответствующей записи в
app/config/config.yml
sylius_core:
# driver: doctrine/orm
classes:
user:
model: Acme\Bundle\Entity\User
sylius_resource:
resources:
sylius.userdata:
driver: doctrine/orm
classes:
model: Acme\Bundle\Entity\UserData
Вышеприведенные несколько строк также показывают:
- Процентовка для sylius_core с мой новый класс пользователя
- Новый ресурс, который является базовым только для нас erdata класс
Теперь для Doctrine Mapping (User.orm.xml):
<?xml version="1.0" encoding="UTF-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="Acme\Bundle\Entity\User" table="sylius_user">
<one-to-many
field="userdata"
target-entity="Acme\Bundle\Entity\UserData"
mapped-by="userid" />
</entity>
</doctrine-mapping>
И отображение для UserData (UserData.orm.xml)
<?xml version="1.0" encoding="UTF-8" ?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="Acme\Bundle\Entity\UserData" table="sylius_userdata">
<id name="id" type="integer">
<generator strategy="AUTO" />
</id>
<many-to-one
field="userid"
target-entity="Acme\Bundle\Entity\User"
inversed-by="userdata"
join-column="userid">
<join-column name="user_id" referenced-column-name="id" nullable="false" />
</many-to-one>
<field name="name" type="string" length="150" />
<field name="datetime" type="datetime" />
</entity>
</doctrine-mapping>