保存后如何获取模型数据(CakePHP)

保存后如何获取模型数据(CakePHP),cakephp,Cakephp,我想在模型保存后从模型中获取最新数据,而无需进行其他选择 目前我这样做: if ($this->Model->save($data)){ $last = $this->Model->find('first',array( 'conditions' => array('Model.id' => $this->Model->id) ); $last['Model']['dataChangedByBehaviors

我想在模型保存后从模型中获取最新数据,而无需进行其他选择

目前我这样做:

if ($this->Model->save($data)){
    $last = $this->Model->find('first',array(
        'conditions' => array('Model.id' => $this->Model->id)
    );
    $last['Model']['dataChangedByBehaviors']; // <-- data I want
}
if($this->Model->save($data)){
$last=$this->Model->find('first',数组(
'conditions'=>array('Model.id'=>$this->Model->id)
);

$last['Model']['dataChangedByBehaviors'];//如果您正在寻找某种解决方案,比如If($last=$this->Model->save($data)),我认为没有这样的事情

但您可以使用findById保存一些代码:

if ($this->Model->save($data)){
      $last = $this->Model->findById($this->Model->id);
}

你不能,但简单的阅读是最快的

  $last = $this->Model->read(null,$this->Model->id);

您的示例有两种不同的情况:

  • $data保存模型数据的完整记录。然后您只需访问$data['model']['dataChangeByBehaviors']:
所以,这里的答案是:你已经有了数据

(注意:如果是新记录,$data当然不包含ID,您需要从$this->Model->ID获取ID。如果您在beforeSave()回调中进行任何更改,这些当然不会反映在$data中)

  • $data只包含您在记录中更新的某些字段。因此,除了从数据库中读取记录之外,没有其他方法可以获取完整的记录-这是您正在做的事情,可以按照Leo的建议进行简化:

所以这里的答案是:没有数据库请求就无法获取数据。

我不明白人们为什么要做人工工作。只需使用getLastInsertId()CakePHP的内置函数,它就完成了:

$post_id=$this->Post->getLastInsertId();

你能澄清一下吗,我真的不明白你在问什么。我想得到像上面例子中的$last这样的数据,而不需要选择数据库。请再次查看这些问题和答案。我觉得还不清楚。还有,因为这是一段时间以前的事,你是自己解决的还是你的解决方案/备选方案是什么?大多数解释性答案!欢迎使用Stack Overflow!感谢您发布您的答案!请务必仔细阅读。还请注意,每次链接到您自己的网站/产品时,都需要发布免责声明。
if ($this->Model->save($data)){
      $last = $this->Model->read(null,$this->Model->id);
      $last['Model']['dataChangeByBehaviors'];  //---- I want get this
}
$post_id=$this->Post->getLastInsertId();