我已經搜索過,並且存在很多與同樣問題的問題,但是他們都沒有解決我的問題。學說PreUpdate從來沒有工作過
我有一個實體,這裏是它的代碼:
/*
* @ORM\HasLifecycleCallbacks
*/
class MyEntity
{
// some preoperties here...
/**
* @ORM\Column(type="text", nullable=true)
* @Assert\MaxLength(limit="500")
*/
private $delivery = null;
/**
* @var $deliveryOn bool
*
* Virtual field used for $delivery property organization
*/
private $deliveryOn = false;
/**
* @ORM\PrePersist()
* @ORM\PreUpdate()
*/
public function preSetDelivery()
{
if ($this->deliveryOn == false)
$this->delivery = null;
}
/**
* @ORM\PostLoad()
*/
public function loadDeliveryOn()
{
if ($this->delivery != null)
$this->deliveryOn = true;
}
}
loadDeliveryOn
方法完全適用所有的時間。但是當我第一次堅持實體到數據庫時,preSetDelivery
只激發了。我希望在更新對象時調用它,但它不起作用。我不知道爲什麼。
我的編輯器:
public function editAction($id)
{
// some code here...
// ...
$request = $this->getRequest();
if ($request->isMethod('POST'))
{
$form->bind($request);
if ($form->isValid())
{
$em->flush();
}
}
}
「我希望在更新對象時調用它」您是在談論php對象還是正在更新的數據庫中的行? – mpm 2013-03-20 23:36:57
如果您移除PrePersist,會發生什麼情況?更新是否獨立運行? – Mark 2013-03-21 12:52:16
@Mark沒有任何變化 – Hast 2013-03-21 15:56:32