0

エンティティ内でサービスを呼び出す方法はありますか

リポジトリ関数を使用してカスタム結果を取得できるように、エンティティ内にエンティティマネージャが必要です。

このようにエンティティ内にContainerInterfaceを挿入することを考えています。

use Symfony\Component\DependencyInjection\ContainerInterface;

class MyEntity
{
    protected $container;

    public function __construct(ContainerInterface $container)
    {
        $this->container = $container;
    }

    public function getEntityManager(){
        return $this->container->get('doctrine')->getEntityManager();
    }
} 

しかし、これは正しい方法ではないと思います。より多くのコードが必要です。つまり、エンティティマネージャーが必要なすべてのエンティティに対してこれを実行する必要があります。

良い解決策はありますか?

4

2 に答える 2

3

できるかどうかはわかりませんが、とにかくやるべきではありません。エンティティは本当に単純であることが意図されています...

リポジトリ機能でカスタム結果を取得できるように、エンティティ内にエンティティマネージャが必要です

あなたは正確に何をしたいのですか、別の解決策がなければなりません...

于 2012-12-10T08:16:45.210 に答える
1

すでに述べたように、依存性注入は間違いなく間違った方法です。

より複雑なクエリにはカスタムエンティティリポジトリ(http://symfony.com/doc/2.0/book/doctrine.html#custom-repository-classes)を使用するか、より複雑な場合はカスタム結果を実装できる特定のサービスを使用します必要(http://symfony.com/doc/2.0/book/service_container.html#referencing-injecting-services)

于 2012-12-10T09:37:09.640 に答える