改进软删除 支持设置deleteTime属性关闭

This commit is contained in:
thinkphp
2018-01-15 16:09:14 +08:00
parent 12b30a4329
commit 92c961bb9e

View File

@@ -19,7 +19,10 @@ trait SoftDelete
{ {
$field = $this->getDeleteTimeField(); $field = $this->getDeleteTimeField();
return !empty($this->data[$field]); if ($field && !empty($this->data[$field])) {
return true;
}
return false;
} }
/** /**
@@ -42,7 +45,11 @@ trait SoftDelete
$model = new static(); $model = new static();
$field = $model->getDeleteTimeField(true); $field = $model->getDeleteTimeField(true);
return $model->getQuery()->useSoftDelete($field, ['not null', '']); if ($field) {
return $model->getQuery()->useSoftDelete($field, ['not null', '']);
} else {
return $model->getQuery();
}
} }
/** /**
@@ -58,7 +65,7 @@ trait SoftDelete
} }
$name = $this->getDeleteTimeField(); $name = $this->getDeleteTimeField();
if (!$force) { if ($name && !$force) {
// 软删除 // 软删除
$this->data[$name] = $this->autoWriteTimestamp($name); $this->data[$name] = $this->autoWriteTimestamp($name);
$result = $this->isUpdate()->save(); $result = $this->isUpdate()->save();
@@ -139,11 +146,15 @@ trait SoftDelete
$name = $this->getDeleteTimeField(); $name = $this->getDeleteTimeField();
// 恢复删除 if ($name) {
return $this->getQuery() // 恢复删除
->useSoftDelete($name, ['not null', '']) return $this->getQuery()
->where($where) ->useSoftDelete($name, ['not null', ''])
->update([$name => null]); ->where($where)
->update([$name => null]);
} else {
return 0;
}
} }
/** /**
@@ -154,7 +165,8 @@ trait SoftDelete
*/ */
protected function base($query) protected function base($query)
{ {
return $query->useSoftDelete($this->getDeleteTimeField(true)); $field = $this->getDeleteTimeField(true);
return $field ? $query->useSoftDelete($field) : $query;
} }
/** /**
@@ -169,6 +181,10 @@ trait SoftDelete
$this->deleteTime : $this->deleteTime :
'delete_time'; 'delete_time';
if (false === $field) {
return false;
}
if (!strpos($field, '.')) { if (!strpos($field, '.')) {
$field = '__TABLE__.' . $field; $field = '__TABLE__.' . $field;
} }