2016-08-06 5 views
-2

私はEntityを "Vote"と呼んでいます。このクラスのdoctrineを使用して、このクラスの値をEasyAdminバンドルのshow listに統合する操作を実行する必要があります。symfony:EntityクラスにEntityManagerを追加する

私は私のservices.ymlでこれを持っている:

app.user: 
     class: AppBundle\Entity\Vote 
     calls: 
       - ['setMe', ["doctrine.orm.entity_manager"]] 

、これを私のクラスで:

public function setMe($entityManager) { 
    $this->em = $entityManager; 
} 

しかしsetMe()が呼び出されることはありません(私が使用しているxdebugのを)。

app.user: 
    class: AppBundle\Entity\Vote 
    calls: 
      - ['setMe', ["doctrine.orm.entity_manager"]] 
    arguments: ["@doctrine.orm.entity_manager"] 

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

が、同じ結果と:の$ this - > EMがセットされていない

だから、私は試してみました。

私の間違いはどこですか?

+0

最初の間違いは、Symfonyコンテナを設定すると魔法のように注入が行われると考えていることです。コンテナは、コンテナからエンティティを引き出す場合にのみ機能します。これはDoctrine 2では起こりません。第2の間違いは、エンティティマネージャを最初に注入しようとしていることです。 Doctrine 2エンティティはアクティブレコードエンティティではありません。機能をサービスクラスに移動するか、アクティブなレコードライブラリに切り替えます。 – Cerad

答えて

0

エンティティマネージャでエンティティマネージャを使用する必要はありません。エンティティはサービスであってはいけません。

本当に必要な場合は、service containerを使用してください。コントローラで$this->get('app.user');に電話すると、Voteエンティティが返されます。または、コントローラー注入を使用します。

関連する問題