我将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。我怎么用呢?
答案 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;
}
}
大声笑,刚刚注意到这是很久以前发布的。