在afterSave中,获取有关$this
的信息的最佳方式是什么。
例如。如果我debug($this->read())
,我会得到关于我正在使用的当前记录(关联模型等)的所有信息。
array(
'Comment' => array(
'id' => '12',
'user_id' => '38'
'body' => 'test',
'created' => '2013-04-11 18:56:26',
'modified' => '2013-04-11 18:56:26'
),
'User' => array(
'password' => '*****',
'id' => '38',
'username' => 'example',
'created' => '2013-01-26 18:25:39',
'modified' => '2013-01-26 18:25:39',
'first_name' => '',
'last_name' => ''
)
)
但这并不意味着我再次查询数据库吗?那不是$this
已经包含了所有这些信息吗?
获取$this->read()
结果的正确方法是什么,或者这是正确的方法?
答案 0 :(得分:2)
正确的方式($this->read
),依赖您想要保存的记录的信息。
例如,如果您正在进行插入操作,那么您的$ data(用作Comment->save($data)
)就是:
array(
'Comment' => array(
'id' => '12',
'user_id' => '38'
'body' => 'test',
'created' => '2013-04-11 18:56:26',
'modified' => '2013-04-11 18:56:26'
),
'User' => array(
'password' => '*****',
'id' => '38',
'username' => 'example',
'created' => '2013-01-26 18:25:39',
'modified' => '2013-01-26 18:25:39',
'first_name' => '',
'last_name' => ''
)
)
我的意思是完全,然后$this->data
仍然会保存您刚刚保存的相同信息。仅在$this->data
之后afterSave
设置为false。
但是,如果您执行类似
的操作$this->Comment->saveField('body', 'othertest');
afterSave中的$this->data
数组只包含类似
Array
(
[id] => 6
[body] => 'othertest'
[modified] => 2013-04-11 15:17:45
)
换句话说,如果你想获得 all 与模型相关的信息而不管在save()中作为参数传递的数据,你将不得不做一个$ this-> read()(或find())。
答案 1 :(得分:0)
你应该能够像这样访问数据:
public function afterSave($var = null){
parent::afterSave($var);
echo '<pre>';
print_r($this->data);
echo '</pre>';
die();
}
尝试该代码并查看输出结果。这将使您可以访问已发布的数据,如果保存成功,则应与记录匹配。你还在使用什么版本的CakePHP以及你想做什么?
虽然阅读很好。