CakePHP:如何在aferSave回调函数中创建重复行

时间:2016-12-05 21:17:52

标签: cakephp callback

在Cakephp的afterSave回调函数中,我正在尝试创建一条新记录,但它正在保存空数据。

public function afterSave($created, $options = array()) {
    if ($any_condition) {
        $record = $this->find('first', array('conditions' => array('id' => $this->data[$this->alias]['id'])));
        $record[$this->alias]['id'] = null;
        $this->create();
        $this->save($record);

    } 

}

当我在db中看到记录时,一切都是空的。我需要知道我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

好的,根据你的代码看起来你会无限次地调用afterSave。如果您需要保存重复信息,我不会在回调中执行此操作。我会从控制器或创建模型函数。

在同一模型中创建自己的功能。然后,您可以调用saveDuplicate而不是保存。这是假设蛋糕2。

chown nagios:nagios /usr/local/nagios/libexec/check_ip.pl

答案 1 :(得分:0)

您始终可以使用ClassRegistry类来获取模型的新实例

public function afterSave($created, $options = array()) {
    if ($any_condition) {
        $record = $this->find('first', array('conditions' => array('id' =>         $this->data[$this->alias]['id'])));
        $model = ClassRegistry::init($this->alias);
        $model->create($record);
        $model->save($record);

    } 

}