簡體   English   中英

(DOCTRINE)mappingBy和inversedBy以及targetEntity批注

[英](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實體,但你不會有訪問能力PostComment ,因為它沒有被映射回
  • 自參考 - Category自參考Category是同一類型的實體

TargetEntity告訴您要與哪個實體創建關系。 想象一下外鍵。 創建外鍵時,需要指定引用表。

ReferencedColumnName告訴應該創建哪個列外鍵。

教義不是魔術。 這只是對象關系映射。 像使用SQL創建關系時一樣考慮它。 許多事情幾乎是相同的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM