我正在使用分类控制器
这是代码
public function create_add(){
if(!empty($this->data))
{
if($this->Classified->save($this->data)){
$this->User->save(array('id'=>$this->Auth->User('id'),'pending_attempts'=>$this->Auth->User('pending_attempts')-1));
$data = $this->User->read();
$this->Auth->login($data);
}
}
}
我想更新用户表中的'pending_attempts'列,例如:
pending_attempts = 10;
每次运行此代码时,pending_attempts将为10 - 1,并始终生成9.
登录后只有时间码工作并更新数据库,如果我再次运行该代码create_add()它总是显示pending_attempts = 9
问题是如何刷新Auth数据?
答案 0 :(得分:1)
您没有更新'pending_attempts',例如:
pending_attempts = 10;
每次运行此代码时,pending_attempts将为10 - 1,并始终生成9.
'pending_attempts'=>$this->Auth->User('pending_attempts')-1)
看着你的代码,我想你正在尝试更新用户的Auth会话,但我认为这不起作用:
$this->Auth->login($data);
看看here
答案 1 :(得分:1)
我在去年的appplication中尝试了很多技巧来刷新。但是没有什么能帮助我。所以为什么我可以给你一个替代方案。首先从table中获取数据,其中user_id在session.And然后用它作为操作数据.....快乐编码兄弟......
答案 2 :(得分:0)
您的方法应如下所示:
public function create_add()
{
if(!empty($this->data))
{
if($this->Classified->save($this->data))
{
$user_data = $this->User->find(null, $this->Auth->User('id'));
$user_data['User']['pending_attempts'] -= 1;
$this->User->save($user_data);
$this->Auth->login($user_data);
}
}
}
我检查了它,它正在工作。请问它是否不适合你。
答案 3 :(得分:0)
我得到了我的问题的解决方案,该代码适合我
public function create_add()
{
if(!empty($this->data))
{
if($this->Classified->save($this->data))
{
$user_data = $this->User->find('first',array('fields' => array('id','pending_attempts'),'conditions'=>array('User.id'=>$this->Auth->User('id'))));
$this->data['User']['id'] = $this->Auth->User('id');
$this->data['User']['pending_attempts']= $user_data['User']['pending_attempts']-1;
$this->User->save($this->data);
}
}
}