Почему я не могу создать модель Doctrine под названием «Альбом»,

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

Используя следующий YAML:

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

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

Неустранимая ошибка: Class 'BaseAlbum' не найден в E: \ sites \ dpp \ system \ application \ models \ Album.php в строке 13

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

Когда вы меняете имя «Альбом» на что-то вроде «Set», это просто работает! Разве это не странно ?!

Поэтому кажется, что использование «альбома» каким-то образом конфликтует, хотя сообщение об ошибке предлагает что-то еще. Изменение во множественном числе Альбомы также не работают, ничего другого просто отлично!

Какие-либо предложения?

Благодаря!

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

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

Сгенерированные «базовые» модели живут под каталогом «models / generated», а другие – в каталоге выше.

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

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

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

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

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