4

I have this function in Entity class but the getDoctrine do not fond...

public function getObject()
{
    $em = $this->getDoctrine()->getEntityManager();

    switch($this->objectType)
    {
        case 'video':
            return $em->getRepository('fdj2012AdminBundle:Video')->find($this->objectId);
            break;
        case 'default':
            return false;
            break;
    }
}

How to use entityManager inside my Entity ?

4

2 に答える 2

10

実際、エンティティは EM について知っているべきではありません。エンティティで高度なロジックが必要な場合は、イベント リスナーを使用します。サービスのようなリスナーを登録すると、EM やコンテナーなどの引数を渡して、Listener クラス内で取得できます。

Symfony ドキュメント

しかし、Entity クラス内で EM を取得する良い方法はわかりません。Entity メソッドでグローバル変数 Kernel を取得する。

global $kernel;
if ( 'AppCache' == get_class($kernel) )
{
   $kernel = $kernel->getKernel();
}
$em = $kernel->getContainer()->get( 'doctrine.orm.entity_manager' );

私に恥ずかしい:(

于 2013-03-21T19:40:01.343 に答える
-1

services.yml にこれを追加します

access_manager:
  class: AppBundle\Services\EntityManager
  arguments: [ @service_container ]

マネージャーで-

private $_container;


public function __construct(ContainerInterface $container)
{
    $this->_container = $container;
}

マネージャーにアクセスするには-

        $entity2Manager = $this->_container->get('entity2_manager');
于 2015-09-21T09:09:47.200 に答える