Исключение в YAML Mapping на Doctrine 2 - PullRequest
0 голосов
/ 06 марта 2011

Я создал свою базу данных и таблицы, используя phpMyAdmin.Я также установил там отношения.

Затем я хотел, чтобы Doctrine 2 создала для меня файлы YAML, выполнив следующую команду:

php doctrine orm: convert-mapping -из базы данных yml / path / to / fixtures / schema

И он создал файлы * .dcm.yml и выглядит нормально.Поэтому мне нужно было создать сущности, выполнив следующее:

php доктрина orm: generate-entity / path / to / models

Однако я получаю эту ошибку:

[Doctrine \ ORM \ Mapping \ MappingException] Класс 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 \ YamlDrita (для)> дляUsers / me / Сайты / project / modules / doctrine2 / classes / doctrine / Doctrine / ORM / Mapping / ClassMetadataFactory.php: 282 Doctrine \ ORM \ Mapping \ ClassMetadataFactory-> loadMetadata () в / Users / me / Sites / project / modules/ doctrine2 / классы / доктрина / доктрина / ОРМ / Mapping / ClassMetadataFactory.php: 176 Doctrine \ ORM \ Mapping \ ClassMetadataFactory-> getMetadataFor () в /Users/me/Sites/project/modules/doctrine2/classes/doctrine/Doctrine/ORM/Mapping/ClassMetadataFactory.php:123 Doctrine \MMapping \ ClassMetadataFactory-> getAllMetadata () в /Users/me/Sites/project/modules/doctrine2/classes/doctrine/Doctrine/ORM/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 /модули / doctrine2 / бен / доктрина.php: 40 include () в / Users / me / Sites / project / modules / doctrine2 / bin / doctrine: 4

Я пытаюсь заставить Doctrine 2 работать с отношениями MySQL в качестве модуляКохана.Думаю, я бы начал с того, чтобы заставить 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 Ответ

0 голосов
/ 17 апреля 2011

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

...