69

カスタムフォームタイプで使用する場合Doctrine\Common\Persistence\ObjectManagerとの違いは何ですか?Doctrine\ORM\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;
    }

 }
4

1 に答える 1

109

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

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

于 2012-04-23T18:13:16.717 に答える