未达到实体的添加方法

时间:2017-09-18 10:02:52

标签: symfony doctrine sonata-admin

我需要使用Sonata Admin& amp;修改Symfony3项目。教义。

我有一个字段列表,所有纹理都保存在基础中 Texture view

问题在于“addTexture”方法,以前的开发人员做过:

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

我们可以添加超过25种纹理:这是我的错误。

所以我添加了一个转储($ this-&gt; textures);出口;什么也没发生,应用程序永远不会达到此目的在其他实体中,达到了“添加”方法。

编辑

似乎是我的Doctrine2 ArrayCollection从未触发我的所有addXXX方法。但它将我的馆藏保存在数据库中,我不知道为什么。

编辑2

我找到了声明列表的位置:

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

有没有办法添加限制或最大项目?然后,如果它的UI受限制,我将不需要更新实体。

1 个答案:

答案 0 :(得分:0)

尝试使用ArrayCollection方法(让我们说我们处理Color Entity):

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;
}