2016-12-04 45 views
0

このinversedByアノテーションとmappedByアノテーションにはどのような値が入りますか? また、targetEntityとreferencedColumnNameは何ですか?(DOCTRINE)mappedByとinversedByおよびtargetEntityアノテーション

これは私のcomment entityの例です。ご覧のとおり、私のチュートリアルでは、文字列commentsinversedBy属性に、\Application\Entity\PosttargetREntity属性の内側に記述するように言います。この1のために

/** 
* This class represents a comment related to a blog post. 
* @ORM\Entity 
* @ORM\Table(name="comment") 
*/ 
class Comment 
{ 

    /** 
    * @ORM\ManyToOne(targetEntity="\Application\Entity\Post", inversedBy="comments") 
    * @ORM\JoinColumn(name="post_id", referencedColumnName="id") 
    */ 
    protected $post; 
} 

、それはcommentsを言います。 このコメント文字列は正確に何を指していますか? コメントの意味はわかりません。これはテーブルへのマッピングか、上のクラスのORM名なのか、それとも何か他のものです。

はまた、ここで

mappedByを使用する場合の例である:

/** 
* @ORM\Entity 
* @ORM\Table(name="post") 
*/ 
class Post 
{ 
    // Post status constants. 
    const STATUS_DRAFT  = 1; // Draft. 
    const STATUS_PUBLISHED = 2; // Published. 

    /** 
    * @ORM\OneToMany(targetEntity="\Application\Entity\Comment", mappedBy="post") 
    * @ORM\JoinColumn(name="id", referencedColumnName="post_id") 
    */ 
    protected $comments; 

私は約owning sides and inverse sidesclick hereを読み始めたが、理解することは極めて困難でした。

ここに記載されている内容はすばらしいものです。

助けがあれば助かります。

答えて

1

私は教義の期待はしていませんが、私はそれをしばらく使っていましたので、今まで私が知っていることを説明しようとします。

逆のページは、Postエンティティのプロパティ(フィールド)を$commentsといい、その逆の場合も同様です。

逆側OneToOne、 OneToMany、または多対多マッピング宣言のmappedBy属性を使用しなければなりません。 mappedBy属性 には、所有側の関連フィールドの名前が含まれます。

所有側は、OneToOne、 ManyToOne、またはManyToManyマッピング宣言のinversedBy属性を使用する必要があります。 inversedBy属性 には、逆側の関連フィールドの名前が含まれています。

@ORM\ManyToOne注釈を使用すると、n:1 relationshipが作成されます。3 types of mappingがあります

  • 双方向から
  • 単方向Commentその逆へのアクセス権を持つPostからPostCommentエンティティの全$commentsフィールドを持つが、あなたはPostにアクセスする機能を持っていません。 Commentからマップされていないため、
  • 自己参照 - TargetEntity同じタイプのエンティティ

ある親Category自己参照としてCategoryあなたが関係を作成しているエンティティに通知します。外来キーを想像してみてください。外部キーを作成するときは、参照テーブルを指定する必要があります。

ReferencedColumnNameは、どの列に外部キーを作成するかを指示します。

Doctrineは魔法ではありません。これは単なるオブジェクト・リレーション・マッピングです。 SQLを使ってリレーションシップを作成したときのように考えることができます。多くのことはほぼ同じです。

関連する問題