Я создал свою базу данных и таблицы с помощью phpMyAdmin. Я устанавливаю отношения и там.
Затем я хотел, чтобы Doctrine 2 создала для меня файлы YAML, выполнив эту команду:
Форма доктрины php: convert-mapping --from-database yml /path/to/fixtures/schema
И он создал файлы *.dcm.yml и выглядит нормально. Итак, мне нужно было создать объекты, выполнив следующие действия:
Форма доктрины php: сгенерировать-сущности /путь/к/моделям
Однако я получаю эту ошибку:
[Doctrine\ORM\Mapping\MappingException] Class Callers\dcm не является допустимым объектом или сопоставленным суперклассом.
Я добавил флаг -v и получил это:
Трассировка исключения: () в /Users/me/Sites/project/modules/doctrine2/classes/doctrine/Doctrine/ORM/Mapping/MappingException.php:137 Doctrine\ORM\Mapping\MappingException::classIsNotAValidEntityOrMappedSuperClass() в /Users/ me/Sites/project/modules/doctrine2/classes/doctrine/Doctrine/ORM/Mapping/Driver/YamlDriver.php:55 Doctrine\ORM\Mapping\Driver\YamlDriver->loadMetadataForClass() в /Users/me/Sites/project /modules/doctrine2/classes/doctrine/Doctrine/ORM/Mapping/ClassMetadataFactory.php:282 Doctrine\ORM\Mapping\ClassMetadataFactory->loadMetadata() в /Users/me/Sites/project/modules/doctrine2/classes/doctrine/ Doctrine/ORM/Mapping/ClassMetadataFactory.php:176 Doctrine\ORM\Mapping\ClassMetadataFactory->getMetadataFor() в /Users/me/Sites/project/modules/doctrine2/classes/doctrine/Doctrine/ORM/Mapping/ClassMetadataFactory.php :123 Doctrine\ORM\Mapping\ClassMetadataFactory->getAllMetadata() в /Users/me/Sites/project/modules/doctrine2/classes/doctrine/Doctrine/O RM/Tools/Console/Command/GenerateEntitiesCommand.php:101 Doctrine\ORM\Tools\Console\Command\GenerateEntitiesCommand->execute() в /Users/me/Sites/project/modules/doctrine2/classes/doctrine/Doctrine/Symfony /Component/Console/Command/Command.php:150 Symfony\Component\Console\Command\Command->run() в /Users/me/Sites/project/modules/doctrine2/classes/doctrine/Doctrine/Symfony/Component/ Console/Application.php:187 Symfony\Component\Console\Application->doRun() в /Users/me/Sites/project/modules/doctrine2/classes/doctrine/Doctrine/Symfony/Component/Console/Application.php:113 Symfony\Component\Console\Application->run() в /Users/me/Sites/project/modules/doctrine2/bin/doctrine.php:40 include() в /Users/me/Sites/project/modules/doctrine2/ корзина/доктрина:4
Я пытаюсь заставить Doctrine 2 работать с отношениями MySQL как с модулем Kohana. Я подумал, что начну с того, чтобы заставить Doctrine работать, так как это действительно самая сложная часть.
Вот созданный файл YAML:
Callers:
type: entity
table: callers
fields:
id:
id: true
type: integer
unsigned: false
nullable: false
generator:
strategy: AUTO
firstname:
type: string
length: 75
fixed: false
nullable: true
lastname:
type: string
length: 75
fixed: false
nullable: true
company:
type: string
length: 75
fixed: false
nullable: true
email:
type: string
length: 150
fixed: false
nullable: true
datecreated:
type: datetime
nullable: false
dateupdated:
type: datetime
nullable: false
address1:
type: string
length: 150
fixed: false
nullable: true
address2:
type: string
length: 150
fixed: false
nullable: true
city:
type: string
length: 100
fixed: false
nullable: true
state:
type: string
length: 50
fixed: false
nullable: true
zip:
type: string
length: 10
fixed: false
nullable: true
Так что же не так?
1 ответ
У меня просто была похожая ошибка. Убедитесь, что ваш файл .dcm.yml называется Callers.dcl.yml, а не callers.dcl.yml. Первая буква в верхнем регистре важна и должна соответствовать имени вашего класса.
Похожие вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными.