如何在保存操作期间(或之前)构建事件侦听器,以确定是否正在对给定字段执行更改


How to build an event listener during (or before??) a save action that determines whether a change is being executed on a given field

我试图在保存期间更新某些字段,但只有当一个字段被更改时,但我不知道如何去做。

更多信息:如果用户在我的模型中对'is_activated'字段进行编辑,那么只有当我的函数'suspendToActive'被调用;否则它应该被忽略。

这是我当前的保存动作:

public function save(Doctrine_Connection $conn = null)
      {
        if ($this->isNew() && !$this->getExpiresAt())
        {
                ... // 
        }
        elseif ($this->getIsActivated()) // this is where I'm having trouble...
        {
            suspendToActive();
        }      
    return parent::save($conn);        
  }

Doctrine中有事件侦听器,因此您应该使用模型的preUpdate()函数并使用调用者数据来检查值是否被更改。

您可以在这里找到详细信息:http://www.doctrine-project.org/projects/orm/1.2/docs/manual/event-listeners/pl#record-listeners