Symfony2 Collection Form不填充连接列

时间:2012-01-05 19:50:34

标签: symfony symfony-forms

我有2个实体,Product和Product_Types。

这是他们之间的关系:

manyToOne:
    product:
      targetEntity: Product
      joinColumn:
        name: product_id
        referencedColumnName: id

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

            ->add('productColor', 'collection', array("type" => new ProductColorType(), "allow_add" => true, 'prototype' => true))

这是我嵌入表格的方式。

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

2 个答案:

答案 0 :(得分:5)

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

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

public function addProductColor(ProductColor $color)
{
    $this->productColors->add($color);
    $color->setProduct($this);
}

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

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

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

答案 1 :(得分:0)

尝试在实体经理刷新之前保持productColors。