我希望在保存之后从模型中获取最新数据而不进行其他选择。
目前我这样做:
if ($this->Model->save($data)){
$last = $this->Model->find('first',array(
'conditions' => array('Model.id' => $this->Model->id)
);
$last['Model']['dataChangedByBehaviors']; // <-- data I want
}
我希望获得在模型回调或行为中设置的任何数据,而不执行额外的查找。
答案 0 :(得分:15)
我不明白为什么人们在做劳动。只需使用getLastInsertId()CakePHP的内置函数就完成了:
$post_id=$this->Post->getLastInsertId();
答案 1 :(得分:11)
您的示例有两种不同的情况:
if ($this->Model->save($data)){
$data['Model']['dataChangeByBehaviors']; //---- I want get this
}
所以,答案是:你已经掌握了数据。
(注意:如果是新记录, $ data 当然不包含ID,您需要从 $ this-&gt; Model-&gt; id 。如果你在 beforeSave()回调中进行任何更改,这些当然不会反映在你的 $ data 中。
if ($this->Model->save($data)){
$last = $this->Model->read(null,$this->Model->id);
$last['Model']['dataChangeByBehaviors']; //---- I want get this
}
所以答案是:没有数据库请求就无法获取数据。
答案 2 :(得分:5)
如果你正在寻找像 if($ last = $ this-&gt; Model-&gt; save($ data))这样的解决方案,我认为没有这样的事情。< / p>
但是你可以使用findById保存一些代码:
if ($this->Model->save($data)){
$last = $this->Model->findById($this->Model->id);
}
答案 3 :(得分:0)
你不能只是简单的阅读是最快的
$last = $this->Model->read(null,$this->Model->id);