Php 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

我是Symfony的新手,但我尽量不重复我自己的话,所以我检查了这么多的参考资料,但没有一个涉及到我的情况。 我有三个表,列如下:

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>