Symfony2 Collection Form不填充连接列

Tom*_*Tom 5 symfony-forms symfony

我有2个实体,Product和Product_Types.

这是他们之间的关系:

manyToOne:
    product:
      targetEntity: Product
      joinColumn:
        name: product_id
        referencedColumnName: id
Run Code Online (Sandbox Code Playgroud)

当我添加新产品时,我希望能够使用相同的表单向此产品添加类型.

            ->add('productColor', 'collection', array("type" => new ProductColorType(), "allow_add" => true, 'prototype' => true))
Run Code Online (Sandbox Code Playgroud)

这就是我嵌入表单的方式.

'data_class'是为ProductType和ProductTypesType设置的,当我添加一个带有类型的新产品时,一切都很好,除了一件事,symfony/doctrine没有设置'product_id'列,所以之间没有任何关系我的产品及其类型.

Ber*_*sek 5

您需要手动交叉链接您的实体.Symfony和Doctrine都不会为你做这件事.例如,您可以在add ...()方法中执行此操作:

public function getProductColors()
{
    return $this->productColors;
}

public function addProductColor(ProductColor $color)
{
    $this->productColors->add($color);
    $color->setProduct($this);
}
Run Code Online (Sandbox Code Playgroud)

然后必须满足三个要求才能实现:

  • 你正在运行Symfony master
  • 你正在运行Doctrine 2.1.7/2.2.3
  • 您将"集合"字段的"by_reference"选项设置为 false

如果你做这一切,你应该没事.


Gui*_*dre 0

在实体管理器刷新之前也尝试保留productColors。