繁体   English   中英

symfony2 doctrine2不刷新新实体

[英]symfony2 doctrine2 not flushing new entity

我有一个链接到配方对象的表格。 该配方对象具有配方类别。

修改配方时,除了添加新类别外,更新任何字段都将非常有用。

我的表格:

$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));

该请求确实有食谱

    $recipeForm->handleRequest($request);
    exit(var_dump($recipeForm->getData()->getRecipeCategories()->toArray()));

该表格确实有食谱

    $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和主义〜1.3,并将composer preferred-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;

可能需要在关系定义中设置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;

我想到了!

我认为在表单中定义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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM