Я создал свою базу данных и таблицы с помощью 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

Так что же не так?

0
MItch 6 Мар 2011 в 20:34

1 ответ

У меня просто была похожая ошибка. Убедитесь, что ваш файл .dcm.yml называется Callers.dcl.yml, а не callers.dcl.yml. Первая буква в верхнем регистре важна и должна соответствовать имени вашего класса.

0
Pierre 17 Апр 2011 в 00:55