代码之家  ›  专栏  ›  技术社区  ›  somejkuser

(学说)mappedBy和inversedBy以及目标实体注释

  •  0
  • somejkuser  · 技术社区  · 8 年前

    这里面有什么价值 inversedBy 注释以及 mappedBy 注释? 还有什么是targetEntity和referencedColumnName?

    这是我的一个例子 comment entity 如您所见,在我的教程中,它说要编写字符串 comments 内部 反向 属性和 \Application\Entity\Post 内部 targetREntity 属性

    /**
     * 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;
    }
    

    对于这个,它说 评论 . 这个注释字符串究竟指的是什么? 我不知道评论是什么意思。这是到表的映射,还是顶部类的ORM名称,或者其他什么。

    下面是一个例子 马佩比 用于:

    /**
     * @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 sides click here 但这非常难以理解。

    这里的任何细节都很好。

    任何帮助都会很好。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Community CDub    8 年前

    反向 $comments 属性(字段) Post 实体,反之亦然。

    相反侧必须使用OneToOne的mappedBy属性, 一对多或多对多映射声明。mappedBy属性 包含拥有方关联字段的名称。

    拥有方必须使用OneToOne的inversedBy属性, 多对多或多对多映射声明。反向属性 包含反向关联字段的名称。

    当你使用 @ORM\ManyToOne 您正在创建的批注 n:1 relationship types of mapping :

    • 双向 - 邮递 获得 Comment 反之亦然
    • 单向的 - 邮递 具有 $评论 充满 议论 实体,但您将无法访问 邮递 从…起 议论 ,因为它没有映射回
    • 自我指向 - Category 父母 类别 哪一个是相同类型的实体

    目标性 告诉您要创建关系的实体。想象一下外键。创建外键时,需要指定引用表。

    告诉应创建哪个列外键。

    教义不是魔法。它只是对象关系映射。就像使用SQL创建关系一样。很多事情几乎是一样的。