Category protected $autoWriteTimestamp = true; 不写
来源:8-9 后端排序功能开发以及之前代码优化工作
架构师是怎样炼成de
2020-04-26
Category protected $autoWriteTimestamp = true; 不写 $data[‘update_time’] = time();
Category 这里设置了 autoWriteTimestamp ,
但是没有自动更新 update_time字段,
public function updateById($id, $data)
{
// $data['update_time'] = time();
return $this->where(['id' => $id])->save($data);
}
为啥没有自动更新该字段,而需要单独写出
写回答
2回答
-
在TP中,模型的方法写入数据可以设置自动更新时间戳,如果用的是Db的方法是不行的:
假如你新增数据这样写:
$this->save(['sex' => 1]);
假如你更新数据:
$this->where('id',1)->save(['sex' => 1]);
上面这样写是不会自动更新时间戳的
$obj = $this->where('id',1)->find(); $obj->sex = 1; $obj->save();
这样写才行
062020-12-09 -
天经地义
2020-04-27
看TP6源码\vendor\topthink\think-orm\src\Model.php的591行处,updateData方法
if ($this->autoWriteTimestamp && $this->updateTime && !isset($data[$this->updateTime])) { // 自动写入更新时间 $data[$this->updateTime] = $this->autoWriteTimestamp($this->updateTime); $this->data[$this->updateTime] = $data[$this->updateTime]; }
$this->autoWriteTimestamp是是否默认更新时间戳,如果你不赋值是默认为false的,if里面的逻辑就进不去,$this->updateTime就是定义你更新时间戳的字段名,默认为“update_time”
创建数据时create_time和update_time自动填写的逻辑在655行的insertData方法
012020-04-27
相似问题