2017-09-18 27 views
-1

我需要修復與索納塔管理&學說Symfony3項目。添加方法未達到實體

我得到了一個字段列表,所有紋理保存在基地 Texture view

的問題是,在「addTexture」的方法,以前開發商做的:

public function addTexture(\AppBundle\Entity\Texture $texture) 
{ 
    if (count($this->textures[]) < 26) 
     $this->textures[] = $texture; 
    return $this; 
} 

而且我們可以添加更多的比25紋理:這是我的錯誤。所以我添加了一個轉儲($ this-> textures);出口;沒有任何事情發生,應用程序永遠不會達到這個。在其他實體中,達到了「添加」方法。

編輯

好像是我Doctrine2 ArrayCollection,其中永遠不會觸發我的所有addXXX方法。但它將我的收藏保存在數據庫上,我不知道爲什麼。

編輯2

我發現那裏的列表聲明:

 ->add('colors','sonata_type_model', [ 
      'multiple' => true, 
      'expanded' => false, 
      'property' => 'Name' 
     ]) 

有沒有辦法添加了限制或最大項目?然後,如果UI受限,我不需要更新實體。

+0

,我建議你到(HTTPS [讀什麼是允許的,什麼是不上SO]://計算器。 com/help)這種問題是不允許的。說,看你的代碼,你應該刪除if條件或更新到新的限制值。 – DonCallisto

+0

問題是「如果」甚至沒有達到。當我刪除整個方法代碼,只放了一個var_dump&exit,代碼正常運行。 – Phobie

+0

「addTexure」方法調用來自哪裏? –

回答

0

嘗試使用ArrayCollection的方法(讓我們說,我們對顏色實體工作):

public function addTexture(\AppBundle\Entity\Texture $texture) 
{ 
    if ($this->textures->count() < 26) { 
     $this->textures->add($texture); 
     $texture->setColor($this); //Add this if you have bidirectional mapping 
    } 
    return $this; 
} 
+0

謝謝,但問題是代碼永遠不會被調用,添加方法永遠不會被觸發(但我不知道爲什麼,因爲紋理被添加到數據庫中)。所以我對preUpdate做了一次黑客攻擊,直到我找到爲什麼添加和刪除方法從未被解僱。 – Phobie

+0

然後我認爲他可能使用了另一面的方法,我的意思是他在Texture實體上通過setColor(Color $ color)將顏色添加到Color類,所以請檢查TexturesController或類似的東西。 –