Php Symfony:三个表中的条令映射,并在复选框的循环中显示数据
我是Symfony的新手,但我尽量不重复我自己的话,所以我检查了这么多的参考资料,但没有一个涉及到我的情况。 我有三个表,列如下:Php Symfony:三个表中的条令映射,并在复选框的循环中显示数据,php,symfony,symfony-forms,many-to-one,doctrine-mapping,Php,Symfony,Symfony Forms,Many To One,Doctrine Mapping,我是Symfony的新手,但我尽量不重复我自己的话,所以我检查了这么多的参考资料,但没有一个涉及到我的情况。 我有三个表,列如下: location T1 location_amenity T2 location_location_amenity T3 id | name id | name id | location_id | location_amenity_id 1 | loc1 1 | amm1
location T1 location_amenity T2 location_location_amenity T3
id | name id | name id | location_id | location_amenity_id
1 | loc1 1 | amm1 1 | loc1 | amm1
2 | loc2 2 | amm2 2 | loc1 | amm2
3 | loc2 | amm1
4 | loc2 | amm2
在这里,我试图将T1和T2中的数据保存到T3中。就像上面的表结构一样。首先,我必须列出T2的所有数据将显示在复选框的循环中。因此,在实体中,我做了:
/** Location Entity
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="LocationLocationAmenity", mappedBy="location", cascade={"remove"})
*/
private $amenities;
/** Getter and setter
*
* Get location amenities
*
* @return ArrayCollection
*/
public function getAmenities() {
return $this->amenities;
}
/**
* Set amenities
*
* @param array $amenities
* @return Location
*/
public function setAmenities(array $amenities) {
$this->amenities = new ArrayCollection($amenities);
return $this;
}
我已经完成了这些步骤来映射表格,但是我没有在我的小树枝模板表单中获得便利设施列表。 这是我的控制器代码:
$em = $this->getDoctrine()->getManager();
/* @var $location Location */
$location = $em->getRepository('AppBundle:Location')->find($id);
$locationAmenities = $location->getAmenities();
return $this->render('location/locationAmenity.html.twig', array(
'locationAmenities' => $locationAmenities));
这是我的locationform.php
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('name')
->add('amenities', 'checkbox');
}
这是我的locationamency.html.twig代码
<div class="form-group">
{{ form_label(form.amenities, '', {'label_attr': {'class': 'col-md-4 control-label amenities', 'data-location-id': location.id}}) }}
<div class="col-md-8">
{{ form_widget(form.amenities, {'attr': {'class': 'form-control'}}) }}
{{ form_errors(form.amenities) }}
</div>
</div>
{{form_标签(form.professionals,,{'label_attr':{'class':'col-md-4控制标签professionals','data location id':location.id}}}
{{form_小部件(form.com,{'attr':{'class':'form control'}}}}
{{form_errors(form.professionals)}
请指导/建议我在哪里错误地获取复选框循环中的所有便利设施列表,以便我可以进一步提交在位置便利设施表(t3)中针对特定位置选中为真的便利设施。
谢谢你的建议 你应该在便利设施和地点之间建立多种关系。它将自己创建并处理第三个表。我是否需要在“位置设施”实体或其他实体(位置实体)或(位置设施)中使用多个关系。请神化。你不需要这样的实体,让条令帮你处理吧。请看这里的多对多双向搜索:一点“symfony多对多”搜索将完成其余部分,以获取更多信息和示例。T3处理T1和T2的记录。所有可用的示例都有两个表。
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('name')
->add('amenities', 'checkbox');
}
<div class="form-group">
{{ form_label(form.amenities, '', {'label_attr': {'class': 'col-md-4 control-label amenities', 'data-location-id': location.id}}) }}
<div class="col-md-8">
{{ form_widget(form.amenities, {'attr': {'class': 'form-control'}}) }}
{{ form_errors(form.amenities) }}
</div>
</div>