簡體   English   中英

使用ManyToMany字段擴展SonataAdmin用戶

[英]Extending SonataAdmin User with ManyToMany field

我目前正在嘗試擴展SonataUserBundle的用戶,以與現有實體添加新的ManyToMany關系。

我根據此處找到的答案擴展了用戶- 擴展Sonata用戶捆綁包並添加新字段

User.php

/**
 * @ORM\ManyToMany(targetEntity="Foo\BarBundle\Entity\Pledge", inversedBy="pledgedUsers")
 **/
private $pledgedOn;

// (...) generated getters and setters here

Pledge.php

/**
 * @ORM\ManyToMany(targetEntity="Foo\UserBundle\Entity\User", inversedBy="pledgedOn")
 **/
private $pledgedUsers;

// (...) generated getters and setters here

同步架構時,我注意到的第一件事是,它創建了2個數據透視表,而不僅僅是一個: pledge_useruser_pledge 我嘗試在其中添加@ORM\\JoinTable ,但這只是更改一個名稱。 當我向兩者都添加相同的@ORM\\JoinTable時,出現“表已存在”錯誤。

當我嘗試在admin中訪問用戶列表時,出現了一個較大的sql錯誤

An exception occurred while executing 'SELECT count(DISTINCT u0_.id) AS sclr0 FROM User u0_ LEFT JOIN fos_user_user_group f2_ ON u0_.id = f2_.user_id LEFT JOIN fos_user_group f1_ ON f1_.id = f2_.group_id':

SQLSTATE[42703]: Undefined column: 7 ERROR: column u0_.id does not exist

我敢肯定這很簡單,但是我很sm異地尋找這個問題的根源。 我錯過了什么?

完整的User.php: http//pastebin.com/TXunsgm1

完整的Pledge.php: http ://pastebin.com/Mta6aiVm

我知道這是一個糟糕的錯誤。 我有

 * @ORM\ManyToMany(targetEntity="Foo\UserBundle\Entity\User", inversedBy="pledgedOn")

 * @ORM\ManyToMany(targetEntity="Foo\BarBundle\Entity\Pledge", inversedBy="pledgedUsers")

其中一個必須mappedBy而不是inversedBy 將第二個更改為

 * @ORM\ManyToMany(targetEntity="Foo\BarBundle\Entity\Pledge", mappedBy="pledgedUsers")

解決了問題。

暫無
暫無

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

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