2017-09-18 17 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或类似的东西。 –