4

領域:

namespace Acme\RegionBundle\Entity;

class Region
{

    private $id;

    /**
     * @ORM\OneToMany(targetEntity="User")
     * @ORM\JoinColumn(name="region_id", referencedColumnName="id")
     */
    private $users;
}

ユーザー:

namespace Acme\UserBundle\Entity;

class User
{
    private $id;
    private $region_id;
}

完全に指定されたエンティティパス、つまりハードコーディングの依存関係に言及せずに、異なるバンドルのエンティティを関連付ける方法。

より良いアプローチはありますか?

ターゲットエンティティリスナーを解決できる解決策です。ここでどのように適用できるのか理解できませんでしたか?

4

1 に答える 1

6

ターゲットエンティティの解決リスナーを使用すると、実行時に関連付けを再定義できます。基本的に、次のようなマップを作成できます。

@ORM\OneToMany(targetEntity="My\Namespace\UserInterface")

ご覧のとおり、インターフェイスをターゲットエンティティとしてマッピングすることはあまり意味がありません。My\Namespace\UserInterfaceすべてを参照に置き換える必要があることを伝えると、非常に便利になりますOther\Namespace\User

于 2013-02-08T20:46:00.973 に答える