2016-07-20 8 views
1

ich die Assoziation zwischen zwei Objekten mit der folgenden BeziehungSymfony, Lehre Entfernen Verbände setEntity (null) nicht erlaubt

Devis Entity entfernen müssen:

class Devis 
{ 
/** 
* @var \stdClass 
* 
* @ORM\ManyToOne(targetEntity="DevisBundle\Entity\Client", inversedBy="devis", cascade={"persist"}) 
* @ORM\JoinColumn(nullable=false, nullable=true) 
*/ 
private $client; 
/** 
* Set client 
* 
* @param \DevisBundle\Entity\Client $client 
* @return Devis 
*/ 

public function setClient(\DevisBundle\Entity\Client $client) 
{ 
    $this->client = $client; 

    return $this; 
} 

Client-Einheit:

class Client 
{ 
/** 
* @var \stdClass 
* 
* @ORM\OneToMany(targetEntity="DevisBundle\Entity\Devis", mappedBy="client", cascade={"remove"}) 
*/ 
private $devis; 

Ich versuchte, das Dokument aus der Doktrin zu folgen: http://docs.doctrine-project.org/en/latest/reference/working-with-associations.html#removing-associations

$devis = $em->getRepository('DevisBundle:Devis')->findOneById($devisId); 
    $client = $em->getRepository('DevisBundle:Client')->findOneById($devis->getClient()); 

    $client->getDevis()->removeElement($devis); 
    $devis->setClient(null); 

    //$em->persist($devis); 
    $em->flush(); 
    dump($devis); 

Aber ich habe diesen Fehler:

Antwort

2

Ihre Set-Methode wie folgt ändern:

public function setClient(\DevisBundle\Entity\Client $client = null) 
{ 
    $this->client = $client; 

    return $this; 
} 

Dies ist, wie auch, es wäre mit dem Befehl Lehre erzeugt werden: erzeugen: Einheiten.

+0

Danke! Ich verstehe nicht, warum ich $ client = null in meinem Setter nicht hatte, generierte ich diesen Setter mit dem Befehl doctrine: generate: entities ... – stax

+0

War Ihre Eigenschaft Annotation mit 'nullable = true' das erste Mal, als Sie es generierten ? – Alsatian

+0

Setter werden nur einmal erstellt. Wenn Sie Entitäten erneut generieren, werden nur die Setter und Getter hinzugefügt, die nicht existieren. – Alsatian