我将我的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;
}
}
哈哈,刚刚注意到这是很久以前发布的