如何在更新后刷新Auth数据

时间:2012-07-22 18:43:17

标签: cakephp cakephp-1.3 cakephp-2.0

我正在使用分类控制器

这是代码

   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数据?

4 个答案:

答案 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);
       }
    }
  }