我有一個symfony項目,我有一個實體與用戶的信息,其中之一是FavClubs,用戶在他的最愛列表中的俱樂部。 添加部分addFavClub()
效果很好,但是當我嘗試使用getFavClubs()
檢索數據時,它只會返回添加的最後一個分會,並且如果我添加分會會覆蓋較舊分會。 數據庫部分運行良好,它保留所有條目。 我搜索並嘗試了我找到的東西,但它不起作用,有幫助嗎? 謝謝!Symfony多對多關係
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\TournamentClub")
*/
private $favClubs;
/**
* Constructor
*/
public function __construct()
{
$this->favClubs = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add favClub
*
* @param \AppBundle\Entity\TournamentClub $favClub
*
* @return UserProfilePlayerprofile
*/
public function addFavClub(\AppBundle\Entity\TournamentClub $favClub)
{
$this->favClubs[] = $favClub;
return $this;
}
/**
* Remove favClub
*
* @param \AppBundle\Entity\TournamentClub $favClub
*/
public function removeFavClub(\AppBundle\Entity\TournamentClub $favClub)
{
$this->favClubs->removeElement($favClub);
}
/**
* Get favClubs
*
* @return \Doctrine\Common\Collections\Collection
*/
public function getFavClubs()
{
return $this->favClubs;
}
- 編輯 - 這是symfony的拋售,如果我做了getFavClubs
UserController.php on line 180:
PersistentCollection {#1721 ▼
-snapshot: []
-owner: UserProfilePlayerprofile {#1579 ▶}
-association: array:20 [ …20]
-em: EntityManager {#1342 …11}
-backRefFieldName: null
-typeClass: ClassMetadata {#1591 …}
-isDirty: true
#collection: ArrayCollection {#1722 ▼
-elements: array:1 [▼
0 => TournamentClub {#1734 ▶}
]
}
#initialized: false
}
收集應該有內部5 TournamentClub,裏面的數據是確定的。
可能不相關,但你忘了指定mappedBy和inversedBy在你的各自的實體?只有擁有方可以成功地添加並堅持一段關係,並且從您的代碼中我無法確切知道誰擁有這種關係,也許它以某種方式導致了問題? –
已經嘗試過,如果我沒有明確說明它的理解,symfony會將該實體與該領域的實體結合在一起。另一個實體沒有任何關係領域。但是就像我說的那樣,已經在兩個實體上做了mappedBy和inversedBy,並且沒有運氣。 另一個奇怪的事情是,有時它會重新查詢新條目,但分析器只顯示一個查詢。 –
啊我不知道。但我需要澄清一下,因爲在你的問題中你說數據庫運行良好,所有數據都在數據庫中正確存在,所以你添加的所有東西都被正確添加了,唯一的問題是get函數只返回最後一個?在這種情況下,我會建議您打印該函數的返回類型,以查看它是數組集合還是單個實體類型。可以幫助更好地調試 –