0

我有不同的模型,它们是另一个模型的扩展。

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

每次我在每个子模型中保存数据时,我都会在我的 HighModel 中调用一个函数来保存刚刚保存的子模型的 id。
它与五个子模型完美配合,但其中一个 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);

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

这可能是由什么引起的?所有 6 个模型的代码都是相同的,只有一个我有这个问题..

4

1 回答 1

0

这更像是一个评论/建议而不是一个答案,但无论如何......

如果您要添加新记录,则在调用 save 后,您可以通过以下方式获取它的 ID:

$this->MyModel->getInsertId();

请参阅食谱中的该方法。我知道 id 也应该在 $this->MyModel->id 中可用,但由于在这种情况下它不起作用,您可能想尝试:

$data = $this->M18Tab->findById($this->M18Tab->getInsertId());
于 2013-08-08T00:34:29.313 回答