Doctrine Entity Manager访问权限

时间:2013-03-01 08:03:31

标签: php codeigniter doctrine entitymanager

我将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 Entity Manager $this->doctrine->em->someMemberFunction;

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

1 个答案:

答案 0 :(得分:0)

$ci = &get_instance();; //get instance of a codeigniter 'core'

$ci->doctrine->em-> ... etc. to use accross the framework

此外,Entity Repository类扩展了EntityRepository

中的\Doctrine\ORM\EntityRepository.php

此类具有受保护变量(_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;
    }
}
大声笑,刚刚注意到这是很久以前发布的。