2012-04-02 8 views
0

Ich habe diese Klasse:PrePersist überprüfen Null-Objekt

* @ORM\Entity 
* @ORM\HasLifecycleCallbacks() 
class Parameter{ 

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

    /** 
    * @ORM\ManyToOne(targetEntity="Project\Bundle\Entity\Anthropometry", inversedBy="parameter") 
    * @ORM\JoinColumn(name="anthropometry_id", referencedColumnName="id") 
    * 
    */ 
    protected $anthropometry; 

    /** 
    * @ORM\Column(name="data", type="string", length=255, nullable=true) 
    */ 
    protected $data; 
    ... 

} 

und diese:

/** 
* @ORM\Table(name="anthropometry") 
* @ORM\Entity 
*/ 
class Anthropometry { 
/** 
* @var integer $id 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* 
* @ORM\OneToMany(targetEntity="Project\Bundle\Entity\Parameter", mappedBy="anthropometry", cascade={"persist"}) 
* 
*/ 
protected $parameter; 

    ... 
} 

In meiner Controller-ich ein Formular erstellen und in der gleichen Aktion zu validieren. Um das Formular zu erstellen, brauche ich einen Instanzparameter. Aber nicht brauchen, beharren ihn.

Also .. wenn ich $ Ausführungs nennen> flush ich den Fehler bekam:

A new entity was found through the relationship ...

Um dies zu lösen Ich habe Kaskade = { "anhalten"} in Anmerkung:

//Class Anthropometry 
... 
/** 
* 
* @ORM\OneToMany(targetEntity="Project\Bundle\Entity\Parameter", mappedBy="anthropometry", cascade={"persist"}) 
* 
*/ 
protected $parameter; 

Aber jetzt, in meiner Datenbank, die Parameter werden beibehalten mit Feld 'Daten' = NULL

Kann ich mit prePersist überprüfen, ob das Feld NULL ist, bevor persist?

so etwas wie das?

//class Parameter 
/** 
* 
* @ORM\prePersist 
*/ 
public function prePersist(){ 
    if($this->getData() == NULL){ 
     return false; 
    } 
} 

Thx!

Antwort

0

ich nicht überprüfen, ob es funktioniert, aber man könnte versuchen, den Parameter unsetting vor der Anthropometrie persistierende (da Sie müssen Parameter nicht bestehen bleiben):

//class Anthropometry 
/** 
* @ORM\prePersist 
*/ 
public function prePersist() 
{ 
    if(!is_null($this->parameter) && $this->parameter->getData() == null){ 
     $this->parameter = null; 
    } 
} 
+0

das Projekt, das ich werde aufhören entwickle für eine Weile. Aber ich denke, das wird funktionieren. Danke!! – Munir