克隆控制器CakePHP中的记录

时间:2016-03-16 12:31:42

标签: cakephp cakephp-3.0

我有一个案例,我必须克隆控制器中的记录,稍微修改克隆和原始记录,然后保存它们。我已尝试以多种不同的方式实现,但最终总是有一个recod未更新或更新错误。这是让我最接近的代码:

public function postpone( $id = null ){

        $this->request->allowMethod( ['post'] );
        $originalTask = $this->Tasks->get( $id );

        //information that has to be updated
        $meetingId = 200;

        //set original to removed and update it
        $originalTask->removed = 1;

        if( $this->Tasks->save( $originalTask ) ){

            //Logic for storing a clone task
            $cloneTask = $originalTask;
            $cloneTask->id = NULL;
            $cloneTask->removed = 0;
            $cloneTask->meeting_id = $meetingId;

            $this->Tasks->save( $cloneTask );

        }

}

在这种情况下会发生的情况是,在存储$cloneTask时,只需更新$originalTask即可,而无需获取新记录。

在保存可能影响它的逻辑之前或之后我没有自定义。

1 个答案:

答案 0 :(得分:1)

您应该在保存“cloneTask”之前创建一个新实体。

    if( $this->Tasks->save( $originalTask ) ){

        //Logic for storing a clone task
        $cloneTask = $this->Tasks->newEntity();

        $cloneTask->removed = 0;
        $cloneTask->meeting_id = $meetingId;

        $this->Tasks->save( $cloneTask );
    }