CakePHP 3.0 时间戳行为
CakePHP 3.0 Timestamp behavior
我想在用户登录时更新用户 table 中的时间戳。我创建了一个名为 'lastLogin' 的日期时间字段。
从我的用户控制器的登录操作中调用:
$user = $this->Auth->identify();
if ($user) {
$this->Auth->setUser($user);
$this->Users->touch($this->Users->get($user['id']), 'Users.afterLogin');
}
在我的用户中 table 我有:
$this->addBehavior('Timestamp', [
'events' => [
'Model.beforeSave' => [
'created' => 'new',
'modified' => 'always',
],
'Users.afterLogin' => [
'lastLogin' => 'always'
]
]
]);
我已经测试过事件被触发并且实体 属性 正在更新。但是它不会保存到数据库中。
这是有意为之,即我是否必须明确保存实体,还是我遗漏了什么?
谢谢!
安德鲁斯
该行为仅更新字段
从the documentation, but the code 中还不是很清楚,只更新字段值。该行为实际上不会更新数据库,它实际上假设稍后会在同一请求中调用保存。
我想在用户登录时更新用户 table 中的时间戳。我创建了一个名为 'lastLogin' 的日期时间字段。
从我的用户控制器的登录操作中调用:
$user = $this->Auth->identify();
if ($user) {
$this->Auth->setUser($user);
$this->Users->touch($this->Users->get($user['id']), 'Users.afterLogin');
}
在我的用户中 table 我有:
$this->addBehavior('Timestamp', [
'events' => [
'Model.beforeSave' => [
'created' => 'new',
'modified' => 'always',
],
'Users.afterLogin' => [
'lastLogin' => 'always'
]
]
]);
我已经测试过事件被触发并且实体 属性 正在更新。但是它不会保存到数据库中。
这是有意为之,即我是否必须明确保存实体,还是我遗漏了什么?
谢谢!
安德鲁斯
该行为仅更新字段
从the documentation, but the code 中还不是很清楚,只更新字段值。该行为实际上不会更新数据库,它实际上假设稍后会在同一请求中调用保存。