2012-04-02 3 views
0

У меня есть этот класс:prePersist проверить нулевой объект

* @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; 
    ... 

} 

и это:

/** 
* @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; 

    ... 
} 

В моем контроллере я создаю форму и проверяющий в том же действии. Для создания формы мне нужно указать один параметр. Но не нужно его упорствовать.

Итак .. когда я звоню $ em-> вровень я получил ошибку:

A new entity was found through the relationship ...

Чтобы решить эту проблему, я поставил каскад = { "упорствовать"} в аннотацию:

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

Но теперь, в моей базе данных, параметры сохраняются с полем «Данные» = NULL

Можно ли проверить с помощью prePersist, если поле NULL перед сохранением?

что-то вроде этого?

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

Thx!

ответ

0

я не проверил, если он работает, но вы можете попробовать сначала убрать параметр, прежде чем сохраняющиеся антропометрическим (так как вы не должны сохраняться параметры):

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

проект, который я развиваю остановится на какое-то время. Но я думаю, что это сработает. Спасибо!! – Munir

Смежные вопросы