CakePHP 3 - 记录无法保存在我的登录功能中

Posted

技术标签:

【中文标题】CakePHP 3 - 记录无法保存在我的登录功能中【英文标题】:CakePHP 3 - record can not be saved in my login function 【发布时间】:2016-04-12 07:37:06 【问题描述】:

记录无法保存在我的登录功能中。我不知道为什么。 有谁知道问题是什么? 控制器中的其他功能(添加、编辑、删除)正常工作。

...
class UsersController extends AppController

...
    /**
     * Login method
     */     
  public function login()
    

    if ($this->request->is('post')) 
        $user = $this->Auth->identify();
        if ($user) 
            $this->Auth->setUser($user);
            $user = $this->Users->newEntity($user,['validate' => false]);
            $user->isNew(false);

            //Last login date
            $user->test = 'abcdef';
            $user->modified = new Time();
            $this->Users->save($user);
            return $this->redirect($this->Auth->redirectUrl());
        
        $this->Flash->error(__('Error'));
    
   
...

【问题讨论】:

代替 newEntity() 使用 patchEntity() 来更新您的用户记录 无法保存”不是正确的问题描述!即使问题对于了解 Cakephp 内部结构的人来说可能很明显,但请始终尽可能具体地说明究竟会发生什么,以及您希望发生什么。显示您正在使用的数据(例如用户数据)、上下文(例如您的实体代码)、您的调试尝试和可能的错误。收集这些信息时,问题通常会自行解决。 【参考方案1】:

为什么你使用 newEntity ? 尝试删除它并做一些类似的事情:

$this->Auth->setUser($user);
            $user->isNew(false);
            $user->validate=false;
            //Last login date
            $user->test = 'abcdef';
            $user->modified = new Time();
            $this->Users->save($user);

如果不起作用,请尝试显示实体错误以了解原因:

之前:$this->Users->save($user);

这样做:

debug($user->errors()); die();

【讨论】:

【参考方案2】:

它是这样工作的:

public function login()
        

        if ($this->request->is('post')) 
            $authUser = $this->Auth->identify();
            if ($authUser) 
                $this->Auth->setUser($authUser);            
                $User = $this->Users->get($authUser['id']);
                //Last login date
                $User->modified = new Time();
                $this->Users->save($User);
                return $this->redirect($this->Auth->redirectUrl());
            
            $this->Flash->error(__('Error'));
        
       

【讨论】:

以上是关于CakePHP 3 - 记录无法保存在我的登录功能中的主要内容,如果未能解决你的问题,请参考以下文章

Cakephp 3.x 保存 hasmany 关联

cakephp 3.0 - 保存独特的关联

Cakephp 3.5 多次保存相同的记录

CakePHP 3.0 保存我的关联数据

CakePHP - 如何在保存时将关联记录添加到模型中?

CakePHP saveAll() 函数问题