mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-08 15:42:48 +08:00
改进Model类的自动时间戳写入设置 时间戳自动写入 和 字段自动完成 分开 ,并且支持单独关闭
This commit is contained in:
@@ -59,11 +59,16 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
protected $insert = [];
|
protected $insert = [];
|
||||||
// 更新自动完成列表
|
// 更新自动完成列表
|
||||||
protected $update = [];
|
protected $update = [];
|
||||||
// 自动写入的时间戳字段列表
|
// 是否需要自动写入时间戳
|
||||||
protected $autoTimeField = ['create_time', 'update_time', 'delete_time'];
|
protected $autoWriteTimestamp = true;
|
||||||
|
// 创建时间字段
|
||||||
|
protected $createTime = 'create_time';
|
||||||
|
// 更新时间字段
|
||||||
|
protected $updateTime = 'update_time';
|
||||||
|
// 删除时间字段
|
||||||
|
protected $deleteTime = 'delete_time';
|
||||||
// 时间字段取出后的默认时间格式
|
// 时间字段取出后的默认时间格式
|
||||||
protected $dateFormat = 'Y-m-d H:i:s';
|
protected $dateFormat = 'Y-m-d H:i:s';
|
||||||
|
|
||||||
// 字段类型或者格式转换
|
// 字段类型或者格式转换
|
||||||
protected $type = [];
|
protected $type = [];
|
||||||
// 是否为更新数据
|
// 是否为更新数据
|
||||||
@@ -286,6 +291,11 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
// 数据自动完成
|
// 数据自动完成
|
||||||
$this->autoCompleteData($this->auto);
|
$this->autoCompleteData($this->auto);
|
||||||
|
|
||||||
|
// 自动写入更新时间
|
||||||
|
if ($this->autoWriteTimestamp) {
|
||||||
|
$this->__set($this->updateTime, null);
|
||||||
|
}
|
||||||
|
|
||||||
// 事件回调
|
// 事件回调
|
||||||
if (false === $this->trigger('before_write', $this)) {
|
if (false === $this->trigger('before_write', $this)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -295,6 +305,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
if ($this->isUpdate) {
|
if ($this->isUpdate) {
|
||||||
// 自动更新
|
// 自动更新
|
||||||
$this->autoCompleteData($this->update);
|
$this->autoCompleteData($this->update);
|
||||||
|
|
||||||
// 事件回调
|
// 事件回调
|
||||||
if (false === $this->trigger('before_update', $this)) {
|
if (false === $this->trigger('before_update', $this)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -327,6 +338,11 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
// 自动写入
|
// 自动写入
|
||||||
$this->autoCompleteData($this->insert);
|
$this->autoCompleteData($this->insert);
|
||||||
|
|
||||||
|
// 自动写入创建时间
|
||||||
|
if ($this->autoWriteTimestamp) {
|
||||||
|
$this->__set($this->createTime, null);
|
||||||
|
}
|
||||||
|
|
||||||
if (false === $this->trigger('before_insert', $this)) {
|
if (false === $this->trigger('before_insert', $this)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -411,11 +427,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
$value = null;
|
$value = null;
|
||||||
}
|
}
|
||||||
if (!in_array($field, $this->change)) {
|
if (!in_array($field, $this->change)) {
|
||||||
if (in_array($field, $this->autoTimeField)) {
|
$this->__set($field, isset($this->data[$field]) ? $this->data[$field] : $value);
|
||||||
$this->__set($field, $value);
|
|
||||||
} else {
|
|
||||||
$this->__set($field, isset($this->data[$field]) ? $this->data[$field] : $value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -916,7 +928,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
// 获取字段类型信息并缓存
|
// 获取字段类型信息并缓存
|
||||||
$this->fieldType = self::db()->getTableInfo('', 'type');
|
$this->fieldType = self::db()->getTableInfo('', 'type');
|
||||||
}
|
}
|
||||||
if (is_null($value) && in_array($name, $this->autoTimeField)) {
|
if (is_null($value) && $this->autoWriteTimestamp && in_array($name, [$this->createTime, $this->updateTime, $this->deleteTime])) {
|
||||||
// 自动写入的时间戳字段
|
// 自动写入的时间戳字段
|
||||||
if (isset($this->type[$name])) {
|
if (isset($this->type[$name])) {
|
||||||
$type = $this->type[$name];
|
$type = $this->type[$name];
|
||||||
|
|||||||
Reference in New Issue
Block a user