Symfony: Doctrine Mapping в трех таблицах и отображение данных в цикле флажков - PullRequest
0 голосов
/ 30 апреля 2018

Я новичок в 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;
}

/** Location Amenity Entity
 * @var ArrayCollection
 *
 * @ORM\OneToMany(targetEntity="LocationLocationAmenity", mappedBy="locationLocationAmenity", cascade={"remove"})
 */
private $locationAmenities;


/** Getter and Setter
 * Get locationAmenities
 *
 * @return ArrayCollection
 */
public function getLocationAmenities() {
    return $this->locationAmenities;
}

/**
 * Set locationAmenities
 *
 * @param array $locationAmenities
 * @return LocationAmenity
 */
public function setLocationAmenities(array $locationAmenities) {
    $this->locationAmenities = new ArrayCollection($locationAmenities);
    return $this;
}

/** Location Location Amenity
 * @var \AppBundle\Entity\Location
 *
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\Location", inversedBy="amenities")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="location_id", referencedColumnName="id")
 * })
 */
protected $location;

/**
 * @var \AppBundle\Entity\LocationAmenity
 *
 * @ORM\ManyToOne(targetEntity="AppBundle\Entity\LocationAmenity", inversedBy="locationAmenities")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="location_amenity_id", referencedColumnName="id")
 * })
 */
private $amenities;


/** Getter and Setter
 * Get location
 *
 * @return Location
 */
public function getLocation(){
    return $this->location;
}

/**
 * Get location
 *
 * @param Location $location
 * @return $this
 */
public function setLocation(Location $location){
    $this->location = $location;
    return $this;
}

/**
 * Get amenities
 *
 * @return LocationAmenity
 */
public function getAmenities(){
    return $this->amenities;
}

/**
 * Get amenities
 *
 * @param LocationAmenity $amenities
 * @return $this
 */
public function setAmenities(LocationAmenity $amenities){
    $this->amenities = $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));

Вот мое местоположение.php

 public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder
            ->add('name')
->add('amenities', 'checkbox');
}

Вот мой код для locationAmenity.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>       

Пожалуйста, помогите / предложите мне, где бы я ни был неправ, чтобы получить список всех удобств в цикле флажков, чтобы я мог дополнительно предоставить те удобства, которые отмечены как истинные для конкретного местоположения в таблице удобств местоположения (t3) , Спасибо в предварительном порядке.

...