Я работаю над приложением, которое также интегрирует Doctrine 2 с ZF1.10. Вам вообще не нужно использовать автозагрузчик Doctrine.
1) В вашем файле application.ini добавьте следующую строку (при условии, что у вас установлен Doctrine в вашей папке библиотеки (так же, как в папке Zend):
autoloadernamespaces.doctrine = "Doctrine"
2) Создать учение или ресурс управления сущностями. В вашем INI-файле:
resources.entitymanager.db.driver = "pdo_mysql"
resources.entitymanager.db.user = "user"
resources.entitymanager.db.dbname = "db"
resources.entitymanager.db.host = "localhost"
resources.entitymanager.db.password = "pass"
resources.entitymanager.query.cache = "Doctrine\Common\Cache\ApcCache"
resources.entitymanager.metadata.cache = "Doctrine\Common\Cache\ApcCache"
resources.entitymanager.metadata.driver = "Doctrine\ORM\Mapping\Driver\AnnotationDriver"
resources.entitymanager.metadata.proxyDir = APPLICATION_PATH "/../data/proxies"
resources.entitymanager.metadata.entityDir[] = APPLICATION_PATH "/models/entity"
3) Затем вам нужно будет загрузить его. Я добавил класс ресурсов в мою папку ресурсов. Убедитесь, что вы указываете на папку в вашем INI-файле:
pluginPaths.Application_Resource_ = APPLICATION_PATH "/resources"
Тогда ваш класс ресурсов ...
class Application_Resource_EntityManager
extends Zend_Application_Resource_ResourceAbstract
{
/**
* @var Doctrine\ORM\EntityManager
*/
protected $_em;
public function init()
{
$this->_em = $this->getEntityManager();
return $this->_em;
}
public function getEntityManager()
{
$options = $this->getOptions();
$config = new \Doctrine\ORM\Configuration();
$config->setProxyDir($options['metadata']['proxyDir']);
$config->setProxyNamespace('Proxy');
$config->setAutoGenerateProxyClasses((APPLICATION_ENV == 'development'));
$driverImpl = $config->newDefaultAnnotationDriver($options['metadata']['entityDir']);
$config->setMetadataDriverImpl($driverImpl);
$cache = new Doctrine\Common\Cache\ArrayCache();
$config->setMetadataCacheImpl($cache);
$config->setQueryCacheImpl($cache);
$evm = new Doctrine\Common\EventManager();
$em = Doctrine\ORM\EntityManager::create($options['db'],$config,$evm);
return $em;
}
}
Менеджер сущностей doctrine 2 теперь доступен для вашего приложения. В вашем контроллере вы можете взять его так:
$bootstrap = $this->getInvokeArg('bootstrap');
$em = $bootstrap->getResource('entitymanager');
Я уверен, что это кому-нибудь поможет:)