保存而不更新 'modified' 字段
Save without updating the 'modified' field
我正在使用 CakePHP 3.0 开发一个新项目。
我正在使用身份验证组件,每当用户登录时,我都会更新字段的值 visited
。
用户控制器:
public function login() {
if ($this->request->is('post')) {
$user = $this->Auth->identify();
if ($user) {
$this->Auth->setUser($user);
$this->Users->setVisited($user['id']);
return $this->redirect($this->Auth->redirectUrl());
}
$this->Flash->error('Your username or password is incorrect.');
}
}
用户表:
public function setVisited($id) {
$user = $this->findById($id)->first();
$user->visited = Time::now();
if($this->save($user)) {
return true;
}
return false;
}
现在,我想在不更新字段 modified
的值的情况下进行此保存。我已经尝试过以前版本的 cake 中使用的方法:
$user->modified = false;
它不起作用,抛出错误:Call to a member function format() on a non-object
因为我猜日期时间字段现在被视为对象。
如有任何帮助,我们将不胜感激,
保罗
您有几种方法可以做到这一点。你想要的实际上是在保存实体时避免调用回调。对于这些情况,您有 updateAll
$this->updateAll(['visited' => Time::now()], ['id' => $id]);
您也可以像以前一样做,但您需要在保存前禁用时间戳行为:
$this->behaviors()->unload('Timestamp');
我建议使用 updateAll
我正在使用 CakePHP 3.0 开发一个新项目。
我正在使用身份验证组件,每当用户登录时,我都会更新字段的值 visited
。
用户控制器:
public function login() {
if ($this->request->is('post')) {
$user = $this->Auth->identify();
if ($user) {
$this->Auth->setUser($user);
$this->Users->setVisited($user['id']);
return $this->redirect($this->Auth->redirectUrl());
}
$this->Flash->error('Your username or password is incorrect.');
}
}
用户表:
public function setVisited($id) {
$user = $this->findById($id)->first();
$user->visited = Time::now();
if($this->save($user)) {
return true;
}
return false;
}
现在,我想在不更新字段 modified
的值的情况下进行此保存。我已经尝试过以前版本的 cake 中使用的方法:
$user->modified = false;
它不起作用,抛出错误:Call to a member function format() on a non-object
因为我猜日期时间字段现在被视为对象。
如有任何帮助,我们将不胜感激,
保罗
您有几种方法可以做到这一点。你想要的实际上是在保存实体时避免调用回调。对于这些情况,您有 updateAll
$this->updateAll(['visited' => Time::now()], ['id' => $id]);
您也可以像以前一样做,但您需要在保存前禁用时间戳行为:
$this->behaviors()->unload('Timestamp');
我建议使用 updateAll