学说实体管理器访问


Doctrine Entity Manager access

我将我的Codeigniter与Doctrine ORM结合在一起,就像这个很棒的教程中描述的那样

http://www.joelverhagen.com/blog/2011/05/setting-up-codeigniter-2-with-doctrine-2-the-right-way/。

它说CodeIgniter中访问控制器中的库的标准方式是$this->libraryName->libraryMember->someMemberFunction;

这意味着我可以通过这种方式访问Codeigniter Controller中的Doctrine实体管理器$this->doctrine->em->someMemberFunction;

问题是我需要在其他地方访问实体管理器,而不仅仅是在控制器中。例如,我需要在一些自定义model_helper类扩展实体存储库中使用实体管理器。我怎么使用它?

$ci = &get_instance();; //get instance of a codeigniter 'core'
$ci->doctrine->em-> ... etc. to use accross the framework

同时,实体库类扩展了'Doctrine'ORM'EntityRepository.php中的EntityRepository

这个类有一个保护变量(_em),它是EntityManager的一个实例;最终,你的repositoryClass,比如分类和函数,它列出了类别它看起来是这样的

class Categories extends EntityRepository {
public function getCategoryList($parent_id = 0) {
 $dql = "SELECT c FROM Entities'Categories c WHERE c.parent_id=:parent_id ORDER BY c.category_name ASC";
    try {
        $query = $this->_em->createQuery($dql);
        $query->setParameter('parent_id', $parent_id);
        return $query->getResult();
    } catch (Exception $e) {
        echo $e->getMessage() . '< br />';
        return;
    }
}

哈哈,刚刚注意到这是很久以前发布的