sonata管理包中的ManyToOne关系

时间:2015-03-12 07:06:18

标签: php symfony sonata-admin

我有一个实体DishesWithCategory通过其他实体的链接:

   /**
     * @ORM\ManyToOne(targetEntity="Dishes", cascade={"persist"})
     */
    protected $dishes;

    /**
     * @ORM\ManyToOne(targetEntity="MenuCategory", cascade={"persist"})
     */
    protected $category;

在管理员中我有:

$formMapper
    ->add('dishes', 'sonata_type_admin', [
        'delete' => false,
        'btn_add' => false
    ])
    ->add('category', 'sonata_type_model',[
        'expanded' => true,
        'multiple' => true,
    ])
;

当我尝试创建一道菜时,我收到错误: 在关联ZaWeb \ MenuBundle \ Entity \ DishesWithCategory#category上找到Doctrine \ Common \ Collections \ ArrayCollection类型的实体,但期望ZaWeb \ MenuBundle \ Entity \ MenuCategory

有人可以面对吗?我该如何解决?

1 个答案:

答案 0 :(得分:0)

我没有完全理解你的模型,但我认为问题来自:multiple =>类别为true,因为您只能为DishesWithCategory设置一个类别(ManyToOne)。

您需要将模型更改为$ category的OneToMany,或者您需要删除可能位于模型构造函数中的ArrayCollection并删除multiple =>真。

您可能需要这样做:

$formMapper
    ->add('dishes', 'sonata_type_admin', [
        'delete' => false,
        'btn_add' => false
    ])
    ->add('category', 'sonata_type_model',[
        'expanded' => true
    ])
;