Symfony: ошибка при создании моделей - PullRequest
1 голос
/ 16 марта 2011

Я новичок в Symfony, и мне даже не удается создать действительные модели.

Я создал свой проект, использующий propel, и написал следующий schema.yml:

propel:
  poc:
    id:           ~
    message:      { type: varchar(140), required: true}
    author:       { type: varchar(255), required: true}
    plus:         { type: integer, default: 0}
    minus:        { type: integer, default: 0}
    created_at:   ~

Затем я выполнил следующие команды без ошибок:

$ php symfony propel:build --sql
$ php symfony propel:insert-sql
$ php symfony propel:build --model

Но когда я пытаюсь загрузить приборы или сгенерировать модуль, я получаю эту ошибку:

$ php symfony propel:data-load             
>> propel    load data from "/home/me/www/poc/data/fixtures"
PHP Fatal error:  Cannot redefine class constant BasePoc::PEER in /home/me/www/poc/lib/model/om/BasePoc.php on line 85

Fatal error: Cannot redefine class constant BasePoc::PEER in /home/me/www/poc/lib/model/om/BasePoc.php on line 85

Константа класса PEER определяется дважды в BasePoc.php, но почему?

Я погуглил и пересоздал проект несколько раз, но я не увидел свою ошибку.

Ответы [ 2 ]

3 голосов
/ 05 апреля 2011

Если вы используете новый sfPropelORMPlugin вместо sfPropelPlugin в комплекте с symfony, просто прочитайте README-файл на плагине, вы пропустите последний шаг:

Изменить путь Symfony поведения в config/propel.ini файл вашего проекта:

[ini]
propel.behavior.symfony.class                  = plugins.sfPropelORMPlugin.lib.behavior.SfPropelBehaviorSymfony
propel.behavior.symfony_i18n.class             = plugins.sfPropelORMPlugin.lib.behavior.SfPropelBehaviorI18n
propel.behavior.symfony_i18n_translation.class = plugins.sfPropelORMPlugin.lib.behavior.SfPropelBehaviorI18nTranslation
propel.behavior.symfony_behaviors.class        = plugins.sfPropelORMPlugin.lib.behavior.SfPropelBehaviorSymfonyBehaviors
propel.behavior.symfony_timestampable.class    = plugins.sfPropelORMPlugin.lib.behavior.SfPropelBehaviorTimestampable

Примечание: достаточно быстрой «массовой замены» файла. Примечание 2: если вы используете sfPropel15Plugin, обновите его до sfPropelORMPlugin.

надеюсь, это поможет!

0 голосов
/ 17 марта 2011

Кажется, Propel не может отрендерить весь файл. (у propel есть очень плохое сообщение об ошибках, yaml) Убедитесь, что в вашем файле нет вкладок и что все обозначено двумя пробелами.

Остальное мне кажется нормальным. Лично я предпочитаю использовать доктрину, (вам нужно было бы просто поместить параметр create_at в поведение ActAs)

proc:
  actAs: Timestampable: ~
  columns:
    id:           ~
    message:      { type: varchar(140), required: true}
    author:       { type: varchar(255), required: true}
    plus:         { type: integer, default: 0}
    minus:        { type: integer, default: 0}
...