我有一个链接到配方对象的表单。 此配方对象具有recipeCategories。
修改配方时,除了添加新类别外,更新任何字段都会很有效。
我的表格:
$builder
->add('recipeCategories', 'entity',array(
'multiple' => true,
'class' => 'AppBundle:FoodAnalytics\RecipeCategory',
'label' => 'Catégories',
'required' => false,
'attr'=>array(
'data-toggle'=>"tooltip",
'data-placement'=>"top",
'title'=>"Indiquez les catégories dans lesquelles enregistrer la recette pour un recherche future plus facile",
)))
这是我得到的:
exit(var_dump($request->request));
请求确实有recipeCategories
$recipeForm->handleRequest($request);
exit(var_dump($recipeForm->getData()->getRecipeCategories()->toArray()));
表单确实有recipeCategories
$formManager->getEntityManager()->persist($recipe);
exit(var_dump($recipe->getRecipeCategories()->toArray()));
配方确实有类别
$formManager->getEntityManager()->flush($recipe);
exit(var_dump($formManager->getEntityManager()->getUnitOfWork()->getScheduledEntityInsertions()));
无论是否有同花,我都会在这里得到一个空白
我正在运行symfony~2.6.0和doctrine~1.3,并将composer prefer-stable设置为true。
知道我能做些什么才能让它发挥作用?其他字段正确保留。 我的实体通过以下方式链接:
/**
* @ORM\ManyToMany(targetEntity="\AppBundle\Entity\FoodAnalytics\Recipe", inversedBy="recipeCategories")
* @ORM\JoinTable(
* name="RecipeCategoryHasRecipe",
* joinColumns={@ORM\JoinColumn(name="recipeCategoryId", referencedColumnName="id", nullable=false)},
* inverseJoinColumns={@ORM\JoinColumn(name="recipeId", referencedColumnName="id", nullable=false)}
* )
*/
private $recipes;
答案 0 :(得分:0)
您可能需要在关系定义中设置cascade
参数:
/**
* @ORM\ManyToMany(targetEntity="\AppBundle\Entity\FoodAnalytics\Recipe", inversedBy="recipeCategories", cascade={"persist"})
* @ORM\JoinTable(
* name="RecipeCategoryHasRecipe",
* joinColumns={@ORM\JoinColumn(name="recipeCategoryId", referencedColumnName="id", nullable=false)},
* inverseJoinColumns={@ORM\JoinColumn(name="recipeId", referencedColumnName="id", nullable=false)}
* )
*/
private $recipes;
答案 1 :(得分:0)
我明白了!
我认为定义by_reference =>表单中的false仅适用于集合,但此处也是如此。我不得不添加以下代码:
/**
* Add recipeCategory
*
* @param RecipeCategory $recipeCategory
*
* @return Recipe
*/
public function addRecipeCategory(RecipeCategory $recipeCategory)
{
$recipeCategory->addRecipe($this); //makes the difference
$this->recipeCategories[] = $recipeCategory;
return $this;
}