Я использую 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'));
Документация использует множество примеров, приводящих к сгенерированным файлам, но не упоминает об этом при разговоре о настройках бутстрапа.
В любом случае, счастлив, что это исправлено сейчас! 🙂