CakePHP 2.1在保存记录时进入无限循环

CakePHP 2.1在保存记录时进入无限循环,cakephp,save,cakephp-2.1,Cakephp,Save,Cakephp 2.1,这个问题可能听起来很奇怪,事实上确实如此。问题是:我有一个模型,followstationline,和它对应的表,followstationline。在模型中,我试图用$this->savearray'field'=>'值保存一条记录;。当我点击相应的页面时,该方法似乎是在无限循环中调用的,我在save语句之前和之后进行了一些调试,它只有在达到内存限制时才会结束。我甚至尝试使用2GB内存,但仍然存在相同的问题 当从其他控制器(而不是FollowStationLinesController)调用该

这个问题可能听起来很奇怪,事实上确实如此。问题是:我有一个模型,followstationline,和它对应的表,followstationline。在模型中,我试图用$this->savearray'field'=>'值保存一条记录;。当我点击相应的页面时,该方法似乎是在无限循环中调用的,我在save语句之前和之后进行了一些调试,它只有在达到内存限制时才会结束。我甚至尝试使用2GB内存,但仍然存在相同的问题

当从其他控制器(而不是FollowStationLinesController)调用该方法时,也会发生这种情况。除此之外,所有其他模型/表格均按预期工作。我真的无法想象问题出在哪里。以下是控制器的代码,分别为型号:

控制器:

    App::uses('AppController', 'Controller');

    class FollowingStationLinesController extends AppController {

    public function admin_set() {
        $this->FollowingStationLine->set(array(1));
    }

}
型号:

App::uses('AppModel', 'Model');

class FollowingStationLine extends AppModel {
    public function set($lineIds = array()){
        if(!is_array($lineIds)){
            return false;   
        }
        $save = array();
        $save[] = array('station_id' => 45);
        debug($save[0]);
        $this->save($save[0]);
    }
  }

任何帮助都将不胜感激

CakePHP的AppModel类有一个名为“set”的函数,该函数由模型的“save”函数调用。通过超越“set”,您将导致两个方法之间的循环

将您的函数重命名为其他函数,您应该可以

您可以查看AppModel源以了解更多信息:

更新:

@mark做了一个很好的评论,如果您的PHP配置包含错误报告模式E_STRICT,您将收到一个错误,因为覆盖了不匹配的签名


设置配置的更多信息:

CakePHP的AppModel类有一个名为“set”的函数,该函数由模型的“save”函数调用。通过超越“set”,您将导致两个方法之间的循环

将您的函数重命名为其他函数,您应该可以

您可以查看AppModel源以了解更多信息:

更新:

@mark做了一个很好的评论,如果您的PHP配置包含错误报告模式E_STRICT,您将收到一个错误,因为覆盖了不匹配的签名


设置配置的更多信息:

哦,我的天……非常令人沮丧,这件事被困了几天……谢谢你的宝贵提示。没有意识到我正在重写Cake的方法。@linkyndy如果有疑问,请转到源代码!:知道,但错过了重写方法的可能性。经验教训:提示:在E_STRICT模式下开发会在这里抛出一个错误,因为您在这里用一组不同的参数覆盖方法哦,我的天……非常令人沮丧,在这个问题上被困了几天……感谢您的宝贵提示。没有意识到我正在重写Cake的方法。@linkyndy如果有疑问,请转到源代码!:知道,但错过了重写方法的可能性。经验教训:提示:在E_STRICT模式下开发会在这里抛出一个错误,因为您在这里用一组不同的参数覆盖方法