【问题标题】:(DOCTRINE) mappedBy and inversedBy and targetEntity annotations(DOCTRINE) mappedBy 和 inversedBy 以及 targetEntity 注释
【发布时间】:2023-03-29 14:14:01
【问题描述】:

inversedBy 注释和mappedBy 注释中包含哪些值? 还有什么是 targetEntity 和 referencedColumnName?

这是我的comment entity 的示例。如您所见,在我的教程中,它说在inversedBy 属性中写入字符串comments,在targetREntity 属性中写入\Application\Entity\Post

/**
 * 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这个 cmets 字符串到底指的是什么? 我不知道 cmets 是什么意思。这是到表的映射,还是顶部类的 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 sides click here 的内容,但非常难以理解。

这里的任何细节都会很棒。

任何帮助都会很棒。

【问题讨论】:

    标签: php zend-framework doctrine-orm zend-framework2 doctrine


    【解决方案1】:

    我不是教条期望,但我曾经使用它一段时间,所以我会尝试解释我目前所知道的。

    InversedBy指的是Post实体中的$comments属性(字段),反之亦然。

    反面要使用OneToOne的mappedBy属性, OneToMany 或 ManyToMany 映射声明。 mappedBy 属性 包含拥有方的关联字段的名称。

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

    当您使用@ORM\ManyToOne 注释时,您正在创建n:1 relationship。三个types of mapping

    • 双向 - Post 可以访问Comment反之亦然
    • 单向 - Post 带有充满 Comment 实体的 $comments 字段,但您无法从 Comment 访问 Post,因为它没有被映射回
    • 自引用 - Categoryself-reference 到父 Category 这是同一类型的实体

    TargetEntity 告诉您要与哪个实体建立关系。想象一下外键。创建外键时需要指定引用表。

    ReferencedColumnName 告诉应该为哪一列创建外键。

    教义不是魔术。它只是对象关系映射。想一想,就像您使用 SQL 创建关系一样。很多东西都差不多。

    【讨论】:

      猜你喜欢
      • 2013-12-04
      • 2012-09-11
      • 1970-01-01
      • 2013-08-20
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      • 2012-09-16
      相关资源
      最近更新 更多