[英](DOCTRINE) mappedBy and inversedBy and targetEntity annotations
這個inversedBy
批注和mappedBy
批注內包含什么值? 還有什么是targetEntity和referencedColumnName?
這是我的comment entity
的示例。 正如你所看到的,在我的教程,它說要寫入字符串comments
里面inversedBy
屬性和\\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;
}
對於這個,它說了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 sides
信息,但這很難理解。
這里的任何細節都很棒。
任何幫助都會很棒。
我沒有學說的期望,但是我曾經使用它一段時間,所以我將盡力解釋到目前為止我所知道的。
InversedBy指的是Post
實體中的$comments
屬性(字段),反之亦然。
反面必須使用OneToOne,OneToMany或ManyToMany映射聲明的maptedBy屬性。 mappingBy屬性包含擁有方的關聯字段的名稱。
擁有方必須使用OneToOne,ManyToOne或ManyToMany映射聲明的inversedBy屬性。 inversedBy屬性包含反側的關聯字段的名稱。
使用@ORM\\ManyToOne
注釋時,您正在創建n:1關系 。 映射有三種類型 :
Post
可以訪問Comment
, 反之亦然 Post
與$comments
場十足的Comment
實體,但你不會有訪問能力Post
從Comment
,因為它沒有被映射回 Category
與自參考父Category
是同一類型的實體 TargetEntity告訴您要與哪個實體創建關系。 想象一下外鍵。 創建外鍵時,需要指定引用表。
ReferencedColumnName告訴應該創建哪個列外鍵。
教義不是魔術。 這只是對象關系映射。 像使用SQL創建關系時一樣考慮它。 許多事情幾乎是相同的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.