簡體   English   中英

ManyToOne關系+如何雙向使用

[英]ManyToOne relationship + How to use in both directions

我有2張桌子,像這樣:

 Users - UserID - Username - Password - ... 
 Players
    - playerID
    - playerName
    - ...
    - User

該關系是ManyToOne (請參見圖片),並且不是必需的。

在此處輸入圖片說明

我已經使用Doctrine自動生成了我的實體。 在我的玩家實體中,我有:

 /**
 * @var \NV\VolleyScoutBundle\Entity\Users
 *
 * @ORM\ManyToOne(targetEntity="NV\VolleyScoutBundle\Entity\Users")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
 * })
 */
protected $user;

但是我的Users Entity中沒有$player變量。 我可以用什么方式添加它? 試圖這樣做,但給了我不同的錯誤。 我想做的是在我的注冊表中添加一個玩家表格。

所以在我的RegisterType(= form)中,我想添加->add('player', new PlayerType()) 但這在我的Users實體中沒有$ player變量是不可能的。

我需要在用戶實體中為$ player設置哪種類型的關系?

您必須在用戶實體中添加注釋。

在玩家實體中

@ORM\OneToMany(targetEntity="Players", mappedBy="user")
protected $player;

在用戶實體中:

@ORM\ManyToOne(targetEntity="Users", inversedBy="player")
@ORM\JoinColumn(name="user_id", referendecColumn="UserId")
proteced $user;

這只是一個草稿。 您必須為目標實體編寫完整的名稱空間,如果有錯誤,請更正錯誤。

您可以在此處找到很多設置錯誤: 原則文檔-與關聯一起使用

嘗試對表名使用小寫字母,因為Linux下的MySQL不喜歡大寫字母。 $ player必須是ArrayCollection的實例

暫無
暫無

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

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