Symfony2,一个表单中的多个关系

Symfony2,一个表单中的多个关系,symfony,doctrine-orm,many-to-many,symfony-forms,Symfony,Doctrine Orm,Many To Many,Symfony Forms,我开始学习sf2,非常酷,对于我的问题,我有两个表: 媒体 /** * @ORM\ManyToMany(targetEntity="Test\SiteBundle\Entity\Website", inversedBy="medias") * @ORM\JoinTable(name="media_website") private $websites; 和网站 /** * @ORM\ManyToMany(targetEntity="Test\SiteBundle\Entity\Medi

我开始学习sf2,非常酷,对于我的问题,我有两个表:

媒体

/**
 * @ORM\ManyToMany(targetEntity="Test\SiteBundle\Entity\Website", inversedBy="medias")
 * @ORM\JoinTable(name="media_website")

private $websites;
网站

/**
 * @ORM\ManyToMany(targetEntity="Test\SiteBundle\Entity\Media", mappedBy="websites")

private $medias;
在我的MediaType.php中,我有以下内容:

$builder
        ->add('title')
        ->add('website', 'entity', array(
            'class'         =>  'TestSiteBundle:Website',
            'property'  =>  'name',
            'query_builder' => function(WebsiteRepository $er)use($user_id) {
                               return $er->getMyWebsites($user_id);
             },
            'multiple'=>false))
<div class="form-group">
   {{ form_label(form.description, "Description", { 'label_attr': {'class': 'control-label col-md-2'} }) }}
   <div class="col-md-5">
        {{ form_widget(form.description, { 'attr': {'class': 'form-control'} }) }}
   </div>
</div>
最后,在细枝页面中,我有以下内容:

$builder
        ->add('title')
        ->add('website', 'entity', array(
            'class'         =>  'TestSiteBundle:Website',
            'property'  =>  'name',
            'query_builder' => function(WebsiteRepository $er)use($user_id) {
                               return $er->getMyWebsites($user_id);
             },
            'multiple'=>false))
<div class="form-group">
   {{ form_label(form.description, "Description", { 'label_attr': {'class': 'control-label col-md-2'} }) }}
   <div class="col-md-5">
        {{ form_widget(form.description, { 'attr': {'class': 'form-control'} }) }}
   </div>
</div>

有什么帮助吗?非常感谢您。

将两个类上的属性设置为
受保护
而不是
私有
,以允许doctrine在其代理类中访问它们


您还需要添加公共getter和setter方法,以便在应用程序中访问模型上的数据。您可以使用Symfony控制台的
原则:生成:实体
命令-

将两个类上的属性设置为
受保护
,而不是
私有
,以允许原则在其代理类中访问它们


您还需要添加公共getter和setter方法,以便在应用程序中访问模型上的数据。您可以使用Symfony控制台的
原则:generate:entities
命令-

我发现,对于有相同问题的人,在关系manytomy中,您需要在FormType中有multiple=>true,因此我的MediaType应该是:

$builder

        ->add('websites', 'entity', array(
            'class'         =>  'EveadSiteBundle:Website',
            'property'  =>  'name',
            'query_builder' => function(WebsiteRepository $er)use($user_id) {
                               return $er->getMyWebsites($user_id);
             },
            'multiple'=>true))

我发现,对于有相同问题的人,在关系ManyToMany中,您需要在FormType中包含multiple=>true,因此我的MediaType应该是:

$builder

        ->add('websites', 'entity', array(
            'class'         =>  'EveadSiteBundle:Website',
            'property'  =>  'name',
            'query_builder' => function(WebsiteRepository $er)use($user_id) {
                               return $er->getMyWebsites($user_id);
             },
            'multiple'=>true))

感谢回复,我将属性更改为protected,并且我已经在模型中设置了getter和setter:“public function addWebsite(),public function removeWebsite(),public function getWebsites()”感谢回复,我将属性更改为protected,我已经在模型中有了getter和setter:“public function addWebsite(),public function removeWebsite(),public function getWebsites()”