22

次のようなものを使用したいと思います:

$em = $this->getEntityManager();

エンティティの内部。

これをサービスとして行う必要があることは理解していますが、いくつかのテスト目的で、エンティティからアクセスしたいと考えています。

それを達成することは可能ですか?

私はしようとしました:

$em = $this->getEntityManager();
$profile_avatar = $em->getRepository('bundle:Perfils')->findOneByUser($this-getId());

しかし、機能していません。

致命的なエラー: 449行目の /opt/lampp/htdocs/web/src/Pct/bundle/Entity/User.php の 未定義メソッド Proxies\webBundleEntityUserProxy::getEntityManager() の 呼び出し

なぜ私はこのようにしようとしているのですか?

Facebook、Twitter、MyOwnWebsite の 3 種類のユーザーがいます。それらのそれぞれには、facebook のプロファイル、twitter などにリンクするさまざまなアバターがあります。myownwebsite ユーザーの場合は、データベースの URL からアバターを取得します。今のところ、サービスを作成するつもりはありません。サービスを機能させ、テストするだけであり、最終的な展開を作成するつもりはないからです。これが、エンティティからエンティティマネージャを呼び出そうとする理由です。今のところ、構成ファイルを変更したくありません。このエンティティだけです。

4

5 に答える 5

6

最善の方法は、ライフサイクルを使用することです:@ORM\HasLifecycleCallbacks

結果を取得したい場合は、適切なイベントを使用できます。

@postLoad
@postPersist
...
于 2014-05-21T21:13:33.800 に答える
0

次のように services.yml を設定する必要があります。

services:
    your_service_name:
        class: AppBundle\Controller\ServiceController
        arguments: [ @doctrine.orm.entity_manager ]

次のコンストラクターを使用してコントローラーも設定する必要があります。

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

コントローラーで使用 $this->emします(例$connection = $this->em->getConnection();

于 2016-02-18T09:38:28.753 に答える