1
I 서식 모음 포함. 새 레코드를 추가 할 때 외래 키는 항상 null입니다.Symfony 3 외래 키를 유지하지 않는 양식 모음
누군가가 문제를 알고 있습니까? 결과를 반복하고 각 레코드를 유지하려고했지만 외래 키는 여전히 null입니다.
컨트롤러 :
public function newAction(Request $request)
{
$bus = new BusVehicles();
$busAmenities = new BusVehiclesAmenities();
// dump ($busAmenities);
// $this->getDoctrine()->getManager()->persist($busAmenities);
$bus->addBusVehiclesAmenities($busAmenities);
$form = $this->createForm(BusVehiclesType::class, $bus);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$form->get('busVehiclesAmenities')->getData()->map(
function ($amenities) use ($em, $bus) {
$bus->addBusVehiclesAmenities($amenities);
$em->persist($amenities);
}
);
// $em->persist($form->get('busVehiclesAmenities')->getData());
$em->persist($bus);
// Adding flash message to our user
$this->addFlash('success', 'admin.bus.created');
// return $this->redirectToRoute('bus_add');
}
return [
'form' => $form->createView(),
];
}
버스 엔티티 (부모)
/** @ORM\OneToMany(
* targetEntity="BusVehiclesAmenities",
* mappedBy="busVehicles",
* cascade={"persist"}
*)
*
*/
private $busVehiclesAmenities;
public function __construct()
{
$this->busVehiclesAmenities = new ArrayCollection();
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Add busVehiclesAmenities
*
* @param \AppBundle\Entity\BusVehiclesAmenities busVehiclesAmenities
* @return BusVehicles
*/
public function addBusVehiclesAmenities(BusVehiclesAmenities $busVehiclesAmenities)
{
if ($this->busVehiclesAmenities->contains($busVehiclesAmenities)) {
return;
}
$this->busVehiclesAmenities->add($busVehiclesAmenities);
$busVehiclesAmenities->addBusVehicles($this);
return $this;
}
/**
* Remove busVehiclesAmenities
*
* @param \AppBundle\Entity\BusVehiclesAmenities $busVehiclesAmenities
*/
public function removeBusVehiclesAmenities(BusVehiclesAmenities $busVehiclesAmenities)
{
if (!$this->busVehiclesAmenities->contains($busVehiclesAmenities)) {
return;
}
$this->busVehiclesAmenities->removeElement($busVehiclesAmenities);
$busVehiclesAmenities->removeBusVehicles(this);
}
/**
* Get busVehiclesAmenities
*
* @return ArrayCollection
*/
public function getBusVehiclesAmenities()
{
return $this->busVehiclesAmenities;
}
/**
* Set busVehiclesAmenities
*
* @param \AppBundle\Entity\BusVehiclesAmenities $busVehiclesAmenities
* @return ArrayCollection
*/
public function setBusVehiclesAmenities($busVehiclesAmenities)
{
$this->busVehiclesAmenities = $busVehiclesAmenities;
}
버스 편의 시설 엔티티 (아동) : 당신은 양방향 연관으로 BusVehicle 및 편의 시설 매핑
/**
*
* @ORM\ManyToOne(targetEntity="\AppBundle\Entity\BusVehicles", inversedBy="busVehiclesAmenities")
* @ORM\JoinColumn(name="bus_vehicles_id", referencedColumnName="id")
*/
private $busVehicles;
/**
*
* @ORM\ManyToOne(targetEntity="\AppBundle\Entity\Amenities", inversedBy="amenities")
* @ORM\JoinColumn(name="amenities_id", referencedColumnName="id")
*
*/
private $amenities;
/**
* @var float
* @ORM\Column(name="price", type="float", scale=2)
*/
protected $price;
public function __construct()
{
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Get busId
*
* @return integer
*/
public function getBusVehicles()
{
return $this->busVehicles;
}
/**
* Add bus
*
* @param \AppBundle\Entity\BusVehicles
*
* @return BusVehiclesAmenities
*/
public function addBusVehicles(BusVehicles $busVehicles)
{
$this->busVehicles = $busVehicles;
//$bus->setBusVehiclesAmenities($this);
return $this;
}
/**
* Remove bus
*
* @param \AppBundle\Entity\BusVehicles
*
* @return BusVehiclesAmenities
*/
public function removeBusVehicles(BusVehicles $busVehicles = null)
{
$this->busVehicles = null;
//$bus->setBusVehiclesAmenities($this);
return $this;
}
몇 가지 팁 : Entity 클래스 이름에 복수형을 사용하지 않을 것이므로 나쁜 습관입니다. 그리고 정말로 필요하지 않으면 양방향 매핑을 사용하지 않을 것입니다. –
제안 해 주셔서 감사합니다. 최대한 빨리 수업 이름을 수정하고 제안 사항을 적용 할 것입니다. – jureispro
제안 해 주셔서 감사합니다. 이미 제안한 코드를 구현했으며 이벤트를 버스 테이블에 저장할 수 없습니다. 그것은 단순히 지속되지 않습니다. – jureispro