Спасибо 'Stegeman' и 'smoove666'. Действительно, казалось, что алфавитная автозагрузка моделей вызывала мои проблемы.
Сгенерированные модели оказались в структуре каталогов следующим образом:
./models/Aguy.php
./models/Pguy.php
./models/Zguy.php
./models/generated/BaseAguy.php
./models/generated/BasePguy.php
./models/generated/BaseZguy.php
Таким образом, любое имя класса, начинающееся с буквы перед 'g', будет «падать», поскольку модели Base * в папке generated
еще не загружены (т. Е. Aguy.php будет «падать», но Pguy.php и Zguy .php будет работать)
Перемещение всех моделей Base * из папки generated
в каталог models
частично решило эту проблему. Теперь любой класс, начинающийся с буквы> 'b', будет работать (т. Е. Теперь классы, начинающиеся с C до F, не будут аварийно завершаться, так как модели Base * автоматически загружались ранее).
Чтобы полностью реализовать решение, я поместил все модели Base * в каталог с именем _generated
, так как _
стоит перед алфавитом 'a'.
Структура каталогов теперь выглядит следующим образом:
./models/_generated/BaseAguy.php
./models/_generated/BasePguy.php
./models/_generated/BaseZguy.php
./models/Aguy.php
./models/Pguy.php
./models/Zguy.php
Проблема решена - осталось мало волос.
Спасибо за ваш вклад.
редактирование:
Более элегантное решение этой проблемы можно найти по адресу: Почему я не могу создать модель Doctrine с именем 'Album'
Проблема может быть решена путем явного указания Doctrine порядка загрузки каталога, содержащего модели
Doctrine::loadModels(array(APPPATH.'/models/generated', APPPATH.'/models'));
Кредит Сандер Верслуйс