Doctrine2中有两种不同的样式:EntityManager或Doctrine_Manager?

时间:2012-08-24 05:28:42

标签: zend-framework entitymanager

以下是我从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很新。

提前多多感谢...

0 个答案:

没有答案