[英]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_user
和user_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.