0

この素晴らしいチュートリアルで説明されている方法で、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 クラスでエンティティ マネージャを使用する必要があります。どのように使用できますか?

4

1 に答える 1

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;
    }
}

笑、これが何年も前に投稿されたことに今気づきました。

于 2013-05-30T15:35:58.737 に答える