2017-10-13 68 views
0

只有最後一個對象。在Sumfony 3.3中,我創建了實體頁面和語言之間的關係,其中頁面與多種語言相關,當我搜索頁面並獲取頁面對象時,但語言屬性只返回最後一個語言對象的集合。無論收藏中有多少物品,它總是最後返回。symfony的@OneToMany關係返回集合

頁實體:

/** 
* @ORM\OneToMany(targetEntity="Language", mappedBy="page", cascade={"ALL"}, indexBy="page_id") 
*/ 
private $languages; 

語言實體:

/** 
* @ORM\ManyToOne(targetEntity="Page", inversedBy="languages") 
*/ 
private $page; 

public function addLanguage(\AppBundle\Entity\Langaugee $language) 
{ 
    $this->languages[] = $language; 

    return $this; 
} 

public function removeLanguage(\AppBundle\Entity\Language $language) 
{ 
    $this->$languages->removeElement($language); 
} 

public function getLanguages() 
{ 
    return $this->languages; 
} 

Page對象是取在PageService:

public function getPageByName($name) 
{ 
return $this->pageRepository->findBy(array("name"=>$name)); 
} 

由於默認屬性$語言上的懶惰,JMS串行設置當序列化頁面對象時,它正在提取語言集合

有沒有人有這個問題?

+1

你能後,你做代碼'$頁面級> getLanguages ()'和''函數getLanguages()'的代碼? – goto

+0

是的,我已經更新的問題,JMS串行器獲取語言 –

+0

好後的代碼中的相關部分^^如果我們不知道你是怎麼得到你的對象,我們也沒有辦法。我們不是魔術師(尚未) – goto

回答

0

進行徹底的調試之後,我想,這指出indexBy這裏濫用。定義indexBy = PAGE_ID總是提供相同的值,從而每一個被映射到SimpleObjectHydrator實體記錄超限現有記錄,只留下最後加入收藏語言對象