实体中如何使用entityManager? [英] How to use entityManager inside Entity?

查看:140
本文介绍了实体中如何使用entityManager?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Entity类中有这个功能,但getDoctrine不喜欢...

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

switch($ this-> objectType)
{
case'video':
return $ em-> getRepository('fdj2012AdminBundle:Video') - >找到($这个 - >对象ID);
break;
case'default':
return false;
break;
}
}

如何在我的实体内使用entityManager? >

解决方案

实际上实体不应该知道EM。我使用事件侦听器,如果我需要在我的实体提前逻辑。当你注册Listeners像服务,你可以传递args那里,像EM或容器,并让他们在监听器类。



Symfony Doc



但我知道不是很好的方式来获得EM内部实体类。通过在Entity方法中获取全局变量Kernel。

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

对我羞耻:(


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 ?

解决方案

Actually Entity shouldn't know about EM. I use Event Listeners if I need advance logic in my Entity. When you register Listeners like services you can pass args there, like a EM or Container and get them inside Listener class.

Symfony Doc

But I know not really good way to get EM inside Entity class. By taking global variable Kernel in Entity methods.

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

Shame on me :(

这篇关于实体中如何使用entityManager?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆