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”列,例如:

未决尝试= 10;

每次运行此代码时,pending_attempts 将为 10 - 1,并且始终为 9。

仅登录时间代码工作并更新数据库后,如果我再次运行该代码 create_add() 它总是显示 pending_attempts =9

问题是如何刷新 Auth 数据?

4

4 回答 4

1

您没有更新 'pending_attempts' ,例如:

未决尝试= 10;

每次运行此代码时,pending_attempts 将为 10 - 1,并且始终为 9。

'pending_attempts'=>$this->Auth->User('pending_attempts')-1)

查看您的代码,我认为您正在尝试更新用户身份验证会话,但我认为它不起作用:

$this->Auth->login($data);

看看这里

于 2012-07-22T19:05:35.047 回答
1

我尝试了许多技巧来刷新我去年所做的应用程序。但没有任何帮助。所以为什么我可以给你一个替代方案。首先使用会话中的 user_id 从表中获取数据。然后将其用作操作数据......快乐的编码兄弟......

于 2012-07-23T10:02:41.190 回答
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);
         }
     }
}

我检查了它,它正在工作。请询问它是否不适合您。

于 2012-07-23T12:12:22.253 回答
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);
       }
    }
  }
于 2012-07-23T18:41:14.667 回答