Я новичок в 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));
Вот мой locationform.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).
Спасибо в предварительном порядке.
Задача ещё не решена.
Других решений пока нет …