Symfony2,一个表单中的多个关系
我开始学习sf2,非常酷,对于我的问题,我有两个表: 媒体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
/**
* @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()”