在保存数据后获取ID时出现奇怪的问题

时间:2013-08-07 17:11:20

标签: cakephp-2.0

我有不同的模型,是另一个模型的延伸。

classes (SubModel1, SubModel2, ..,6) extends -> HighModel extends -> Appmodel

每次我在每个子模型中保存数据时,我都会在HighModel中调用一个函数来保存刚刚保存的SubModel的id。
它与五个SubModel完美配合,但在一个id中始终是:($shouldBeThisId - 1)在添加和编辑功能中.... o_O

这是我的添加功能:

    public function add() {
    if ($this->request->is('post')) {
        $this->M18Tab->create();
        if ($this->M18Tab->save($this->request->data)) {
            $data = $this->M18Tab->findById($this->M18Tab->id); //<---problem's here
            if($this->M18Tab->M18Model->saveVersion($data)){
                $this->Session->setFlash(__('The m18 tab has been saved'));
                $this->redirect(array('action' => 'view', $this->M18Tab->id));
            } else {
                $this->Session->setFlash(__('Error with versioning system'));
            }
        } else {
            $this->Session->setFlash(__('The m18 tab could not be saved. Please, try again.'));
        }
    }
    //view variables
}

确定。所以保存后我会回忆起“刚刚保存的数据”并将其传递给$this->SubModel->HighModel->saveVersion($data)。而奇怪的是,如果我试图强制id找到:

$data = $this->M18Tab->findById(33);

它仍会在刚刚插入的ID之前找到id:0。

这可能是由什么造成的?所有6个型号的代码相同,只有一个我有这个问题..

1 个答案:

答案 0 :(得分:0)

这更多的是评论/建议而不是答案,但无论如何......

如果您要添加新记录,请在致电保存后,通过以下方式获取ID:

$this->MyModel->getInsertId();

the cookbook中查看该方法。我知道id也应该在$ this-&gt; MyModel-&gt; id上可用,但由于它在这种情况下不起作用,你可能想尝试:

$data = $this->M18Tab->findById($this->M18Tab->getInsertId());