Привет, я наткнулся на то же
проблема, и я думаю, что я знаю, где
вопрос.
Так
Doctrine_Core :: createTablesFromModels ()
вызывает Doctrine_Export :: exportSchema ()
который в свою очередь вызывает
Doctrine_Core :: loadModels ().
Doctrine_Core :: loadModels () использует
RecursiveIteratorIterator и итерации
поверх всех найденных файлов.
Теперь я думаю, порядок файлов
возвращено RecursiveIteratorIterator
не всегда одно и то же (зависит от ОС,
имена файлов и космическое излучение), но
самое главное, что
файлы классов из «модулей / сгенерированные»
каталог (как в примерах) НЕ
включены до получения подклассов
из сгенерированных классов. Это означает
что Doctrine_Core :: autoload () не работает
загружать классы из
каталог «модули / сгенерированный», точно
эта проверка не проходит:
if (0! == stripos ($ className,
'Doctrine_') ||
class_exists ($ className, false) ||
interface_exists ($ className, false))
, так как базовый класс не начинается с
'Doctrine_' и еще не загружен.
Чтобы исправить это правильно алгоритм для
модули загрузки должны быть изменены на
сначала включите «модули / созданные»
классы, а затем остальные классы. я
не уверен, но, возможно, Core :: autoload ()
может быть изменено, чтобы включить базу
классы правильно.
БЫСТРЫЙ ВОЗМОЖНЫЙ РЕШЕНИЕ: как быстро
Обходной путь Я изменил параметры в
вызов метода createTablesFromModels () для:
Doctrine_Core :: createTablesFromModels (массив ( 'модели / сгенерированные', 'модели'));
как может принять createTablesFromModels ()
массив каталогов.
Надеюсь, это поможет вам, пожалуйста, дайте мне
знать, если вам нужна дополнительная информация.
Спасибо!