Почему я не могу создать модель Doctrine с именем 'Album' - PullRequest
0 голосов
/ 06 декабря 2009

Я использую Doctrine в качестве ORM в своем проекте, но столкнулся со странной ошибкой:

Использование следующего YAML:

Album:
  tableName: dpp_album
  actAs: [Timestampable]
  columns:
    name: string(255)
    description: string(255)
    online: boolean

Затем я генерирую свои модели, но после обновления моей страницы и автозагрузки моделей PHP выдает эту ошибку:

Неустранимая ошибка: класс BaseAlbum отсутствует нашел в E: \ сайтов \ ДПП \ система \ приложения \ модели \ Album.php по линии 13

Как ни странно, все остальные мои модели в порядке, и в этих случаях можно найти базовые классы.

При изменении названия «Альбом» на что-то вроде «Установить» это просто работает! Разве это не странно?!

Так что, кажется, использование 'Album' как-то конфликтует, хотя сообщение об ошибке подсказывает что-то другое. Изменение во множественных альбомах также не работает, все остальное просто отлично!

Есть предложения?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 07 декабря 2009

Проблема заключается в порядке автозагрузки классов моделей.

Сгенерированные «базовые» модели находятся в каталоге «models / generate», а остальные - в каталоге выше.

Порядок загрузки не может быть гарантирован, поэтому иногда модель загружается до базовой модели, на которую она распространяется, и, таким образом, выдает эту ошибку.

В моем файле начальной загрузки я теперь явно включил порядок загрузки каталогов следующим образом:

Doctrine::loadModels(array(APPPATH.'/models/generated', APPPATH.'/models'));

В документации используется множество примеров, приводящих к созданию файлов, но не упоминается это поведение при обсуждении конфигураций начальной загрузки.

В любом случае, рад, что это исправлено сейчас! : -)

2 голосов
/ 07 декабря 2009

Если установлена ​​опция generateBaseClasses (по умолчанию) generateModelsFromYaml () в вашем случае создаст класс AlbumBase (по умолчанию в подкаталоге generated) и пустой класс Album extends AlbumBase. То есть если Album создан, AlbumBase должен быть уже известен или загружен каким-либо автозагрузчиком.

...