这个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 创建关系时一样。很多事情几乎是一样的。