2016-10-11 1 views
1

Der Code funktioniert mit Ausnahme der NULL-Wert auf person_id in Resume-Tabelle. Ich kann nicht herausfinden, wie man Wert darauf setzt. Ich versuche dies:Null Wert für Fremdschlüssel mit OneToOne Beziehung

$resume->setPerson($person); --> not working. 

\ AppBundle \ Entity \ Person

class Person 
{ 
/** 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\Column(type="string", length=100) 
*/ 
private $name; 

/** 
* @ORM\OneToOne(targetEntity="Resume", mappedBy="person", cascade={"persist", "remove"}) 
*/ 
private $resume; 

/** 
* Get id 
* 
* @return integer 
*/ 
public function getId() 
{ 
    return $this->id; 
} 

/** 
* Set name 
* 
* @param string $name 
* 
* @return Person 
*/ 
public function setName($name) 
{ 
    $this->name = $name; 

    return $this; 
} 

/** 
* Get name 
* 
* @return string 
*/ 
public function getName() 
{ 
    return $this->name; 
} 

/** 
* Set resume 
* 
* @param \AppBundle\Entity\Resume $resume 
* 
* @return Person 
*/ 
public function setResume(\AppBundle\Entity\Resume $resume = null) 
{ 
    $this->resume = $resume; 

    return $this; 
} 

/** 
* Get resume 
* 
* @return \AppBundle\Entity\Resume 
*/ 
public function getResume() 
{ 
    return $this->resume; 
} 
} 

\ AppBundle \ Entity \ Fortsetzen

class Resume 
{ 
/** 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\Column(type="string", length=100) 
*/ 
private $address; 

/** 
* @ORM\OneToOne(targetEntity="Person", inversedBy="resume") 
* @ORM\JoinColumn(name="person_id", referencedColumnName="id") 
*/ 
private $person; 

/** 
* Get id 
* 
* @return integer 
*/ 
public function getId() 
{ 
    return $this->id; 
} 

/** 
* Set address 
* 
* @param string $address 
* 
* @return Resume 
*/ 
public function setAddress($address) 
{ 
    $this->address = $address; 

    return $this; 
} 

/** 
* Get address 
* 
* @return string 
*/ 
public function getAddress() 
{ 
    return $this->address; 
} 

/** 
* Set person 
* 
* @param \AppBundle\Entity\Person $person 
* 
* @return Resume 
*/ 
public function setPerson(\AppBundle\Entity\Person $person = null) 
{ 
    $this->person = $person; 

    return $this; 
} 

/** 
* Get person 
* 
* @return \AppBundle\Entity\Person 
*/ 
public function getPerson() 
{ 
    return $this->person; 
} 
} 

\ AppBundle \ Controllers \ PersonController

class PersonController extends Controller 
{ 
/** 
* @Route("/person/new", name="person_new") 
* 
*/ 
public function createProductAction(Request $request) 
{ 
    $person = new Person(); 

    $resume = new Resume(); 
    $resume->setPerson($person); 


    $form = $this->createForm(PersonType::class, $person); 

    $form->handleRequest($request); 

    if ($form->isValid()) { 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($person); 
     $em->flush(); 
    } 

    return $this->render(
     'person/new.html.twig', 
     array(
      'form' => $form->createView(), 
     ) 
    ); 
} 

/Person/neu. html.twig

{% extends 'base.html.twig' %} 

{% block body %} 

{{ form_start(form) }} 
{{ form_widget(form) }} 
<button type="submit" class="btn btn-primary">Save</button> 
{{ form_end(form) }} 

{% endblock %} 

Antwort

0

hinzufügen $resume->setPerson($this); in Ihrem setResume. Im Moment haben Sie keinen Code, der eine Person für den Lebenslauf aktualisieren würde, da Sie die Person in Ihrem Controller bearbeiten (nicht fortsetzen).

/** 
* Set resume 
* 
* @param \AppBundle\Entity\Resume $resume 
* 
* @return Person 
*/ 
public function setResume(\AppBundle\Entity\Resume $resume = null) 
{ 
    $resume->setPerson($this); 
    $this->resume = $resume; 

    return $this; 
} 
+0

Es funktioniert. Ich danke dir sehr. – ronald

Verwandte Themen