以下是我从Vikram Vaswani所着的“Zend Framwork”一书中学到的:
在Bootstrap.php中
protected function _initDoctrine() {
require_once 'Doctrine.php';
$this->getApplication()->getAutoloader()->pushAutoloader(array('Doctrine', 'autoload'));
$manager = Doctrine_Manager::getInstance();
$manager->setAttribute(
Doctrine::ATTR_MODEL_LOADING,
Doctrine::MODEL_LOADING_CONSERVATIVE
);
$config = $this->getOption('doctrine');
$conn = Doctrine_Manager::connection($config['dsn'], 'doctrine');
return $conn;
}
控制器中的
protected function uLookupDB($theName) {
$q = Doctrine_Query::create()
->from('User u')
->where('u.name = ?', $theName);
return $q->fetchArray();
}
我开始知道EntityManager还有另一个范例。
当我尝试使用代码获取EM时:
$em = $this->getInvokeArg('bootstrap')->getResource('doctrine');
我当然不是EntityManager而是Doctring_Connection_Mysql。
我需要EM,因为我想使用更多的导航SQL / DQL,如:
$dql = "SELECT p, count(c.id) AS comments " .
"FROM Post p JOIN p.comments GROUP BY p";
$results = $entityManager->createQuery($dql)->getResult();
我如何使用这两种不同的风格?我是否必须建立两个连接,一个是通过Doctrine_Manager,另一个是EM?
欢迎任何类型的评论或链接。我对Doctrine很新。
提前多多感谢...