(DOCTRINE) mappedby 和 invertedBy 和 targetEntity 注释



这个inversedBy注释以及mappedBy注释中有哪些值?还有什么是 targetEntity 和 referencedColumnName?

这是我comment entity的一个例子.如您所见,在我的教程中,它说将字符串comments写入inversedBy属性中,ApplicationEntityPost写入targetREntity属性。

/**
* This class represents a comment related to a blog post.
* @ORMEntity
* @ORMTable(name="comment")
*/
class Comment
{
/**
* @ORMManyToOne(targetEntity="ApplicationEntityPost", inversedBy="comments")
* @ORMJoinColumn(name="post_id", referencedColumnName="id")
*/
protected $post;
}

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

以下是使用mappedBy的示例:

/**
* @ORMEntity
* @ORMTable(name="post")
*/
class Post 
{
// Post status constants.
const STATUS_DRAFT       = 1; // Draft.
const STATUS_PUBLISHED   = 2; // Published.
/**
* @ORMOneToMany(targetEntity="ApplicationEntityComment", mappedBy="post")   
* @ORMJoinColumn(name="id", referencedColumnName="post_id")
*/
protected $comments;

我开始阅读有关owning sides and inverse sides点击这里的信息,但很难理解。

这里任何细节都会很棒。

任何帮助都会很棒。

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

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

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

拥有方必须使用一对一的反向由属性, ManyToOne 或 ManyToMany 映射声明。反转者属性 包含反侧关联字段的名称。

使用@ORMManyToOne注释时,正在创建 n:1 关系。有三种类型的映射:

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

目标实体告诉您要与哪个实体创建关系。想象外键。创建外键时,需要指定引用表。

引用列名告知应创建哪个列外键。

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

相关内容

  • 没有找到相关文章