0

私はsymfony2が初めてです

他の複数のエンティティでエンティティを再利用するにはどうすればよいですか?

たとえば、(これは実際にそうです)

CustomVar というエンティティがあること

私のプロジェクトには、プロジェクト、カテゴリ、製品があります。

プロジェクトに customvars (onetomany) を保持させ、製品にも customvars (onetomany) を保持させたい:

project 1:n customvar

product 1:n customvar

そのため、製品にアクセスするときに、製品レベルのカスタム変数だけでなく、プロジェクト レベルのカスタム変数にもアクセスできます。

これらは両方とも同じオブジェクトを使用すると想定していますが、これに適切に注釈を付けて使用するにはどうすればよいですか?

4

1 に答える 1

0

では、CustomVarを製品とプロジェクトの両方に関連付けたいですか?

class CustomVar {

    /**
     * @ORM\ManyToOne(targetEntity="Project", inversedBy="customVars")
     * @ORM\JoinColumn(name="project_id", referencedColumnName="id", nullable=true)
     */
    private $project;

    /**
     * @ORM\ManyToOne(targetEntity="Product", inversedBy="customVars")
     * @ORM\JoinColumn(name="product_id", referencedColumnName="id", nullable=true)
     */
    private $product;
}

私たちのプロジェクト(または製品)では、次のコードがあります:

class Project {

    /**
     * @ORM\OneToMany(targetEntity="CustomVar", mappedBy="project")
     */
    private $customVars;
}

製品とプロジェクトが関連している場合は、$ product-> getProject()->getCustomVars()と$ product-> getCustomVars()を実行して、返されたArrayCollectionsを操作できます。

2つのオブジェクトの一方のみに関連させたい場合は、セッターに別の関係が設定されているかどうかをチェックさせ(プロジェクト変数と製品変数をテストすることにより)、それを自分のやり方で処理することができます(例外をスローする、何もしないなど) 。

于 2012-07-04T11:12:52.373 に答える