2012-04-23 30 views
51

カスタムフォームタイプで使用する場合、Doctrine\Common\Persistence\ObjectManagerDoctrine\ORM\EntityManagerの違いは何ですか?Symfony2のObjectManagerとEntityManagerの違いは?

$this->em->getRepository()$this->om->getRepository()の両方を使用してリポジトリを取得できます。

class MyFormType extends \Symfony\Component\Form\AbstractType 
{ 

    /** 
    * @var Doctrine\ORM\EntityManager 
    */ 
    protected $em; 

    public function __construct(Doctrine\ORM\EntityManager $em) 
    { 
     $this->em = $em; 
    } 

} 

代わりの:

class MyFormType extends \Symfony\Component\Form\AbstractType 
{ 

    /** 
    * @var Doctrine\Common\Persistence\ObjectManager 
    */ 
    protected $om; 

    public function __construct(Doctrine\Common\Persistence\ObjectManager $om) 
    { 
     $this->om = $om; 
    } 

} 

答えて

87

ObjectManagerインタフェースであり、EntityManagerはORMの実装です。唯一の実装ではありません。たとえば、MongoDB ODMのDocumentManagerもそれを実装します。 ObjectManagerは、すべての実装の共通のサブセットのみを提供します。

ObjectManager実装でフォームタイプを使用する場合は、それを使用します。この方法で、ORMからODMに切り替えることができ、あなたのタイプは同じように動作します。しかし、EntityManagerしか提供しておらず、ODMに切り替える予定がない特定のものが必要な場合は、代わりにそれを使用してください。

+0

うわー、ありがとう!私はObjectManagerに行くつもりです。 – gremo

+0

私は、EntityManagerの使用は現在廃止されていると思っています。しかし、正しい場合でもEntityManagerInterfaceはありますが、ObjectmanagerとEntityManagerInterfaceの違いはわかりません。 –

関連する問題