mirror of
https://gitee.com/fastadminnet/framework.git
synced 2026-07-08 23:52:49 +08:00
增加排除字段方法except 废弃字段使用disuse定义
This commit is contained in:
@@ -59,6 +59,8 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
protected $field = [];
|
protected $field = [];
|
||||||
// 数据排除字段
|
// 数据排除字段
|
||||||
protected $except = [];
|
protected $except = [];
|
||||||
|
// 数据废弃字段
|
||||||
|
protected $disuse = [];
|
||||||
// 只读字段
|
// 只读字段
|
||||||
protected $readonly = [];
|
protected $readonly = [];
|
||||||
// 显示属性
|
// 显示属性
|
||||||
@@ -124,6 +126,16 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
} else {
|
} else {
|
||||||
$this->data = $data;
|
$this->data = $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->disuse) {
|
||||||
|
// 废弃字段
|
||||||
|
foreach ((array) $this->disuse as $key) {
|
||||||
|
if (isset($this->data[$key])) {
|
||||||
|
unset($this->data[$key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 记录原始数据
|
// 记录原始数据
|
||||||
$this->origin = $this->data;
|
$this->origin = $this->data;
|
||||||
|
|
||||||
@@ -1137,12 +1149,17 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
if ($this->autoWriteTimestamp) {
|
if ($this->autoWriteTimestamp) {
|
||||||
array_push($field, $this->createTime, $this->updateTime);
|
array_push($field, $this->createTime, $this->updateTime);
|
||||||
}
|
}
|
||||||
|
} elseif (!empty($this->except)) {
|
||||||
|
$fields = $this->getQuery()->getTableInfo('', 'fields');
|
||||||
|
$field = array_diff($fields, (array) $this->except);
|
||||||
|
$this->field = $field;
|
||||||
} else {
|
} else {
|
||||||
$field = [];
|
$field = [];
|
||||||
}
|
}
|
||||||
if ($this->except) {
|
|
||||||
// 排除字段
|
if ($this->disuse) {
|
||||||
$field = array_diff($field, (array) $this->except);
|
// 废弃字段
|
||||||
|
$field = array_diff($field, (array) $this->disuse);
|
||||||
}
|
}
|
||||||
return $field;
|
return $field;
|
||||||
}
|
}
|
||||||
@@ -1297,7 +1314,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
/**
|
/**
|
||||||
* 设置允许写入的字段
|
* 设置允许写入的字段
|
||||||
* @access public
|
* @access public
|
||||||
* @param mixed $field 允许写入的字段 如果为true只允许写入数据表字段
|
* @param string|array $field 允许写入的字段 如果为true只允许写入数据表字段
|
||||||
* @return $this
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function allowField($field)
|
public function allowField($field)
|
||||||
@@ -1309,6 +1326,21 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置排除写入的字段
|
||||||
|
* @access public
|
||||||
|
* @param string|array $field 排除允许写入的字段
|
||||||
|
* @return $this
|
||||||
|
*/
|
||||||
|
public function except($field)
|
||||||
|
{
|
||||||
|
if (is_string($field)) {
|
||||||
|
$field = explode(',', $field);
|
||||||
|
}
|
||||||
|
$this->except = $field;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置只读字段
|
* 设置只读字段
|
||||||
* @access public
|
* @access public
|
||||||
@@ -2066,9 +2098,6 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
public function __call($method, $args)
|
public function __call($method, $args)
|
||||||
{
|
{
|
||||||
$query = $this->db(true, false);
|
$query = $this->db(true, false);
|
||||||
if ($this->except) {
|
|
||||||
$query->field($this->except, true);
|
|
||||||
}
|
|
||||||
if (method_exists($this, 'scope' . $method)) {
|
if (method_exists($this, 'scope' . $method)) {
|
||||||
// 动态调用命名范围
|
// 动态调用命名范围
|
||||||
$method = 'scope' . $method;
|
$method = 'scope' . $method;
|
||||||
@@ -2084,10 +2113,6 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
|
|||||||
{
|
{
|
||||||
$model = new static();
|
$model = new static();
|
||||||
$query = $model->db();
|
$query = $model->db();
|
||||||
if ($model->except) {
|
|
||||||
$query->field($model->except, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (method_exists($model, 'scope' . $method)) {
|
if (method_exists($model, 'scope' . $method)) {
|
||||||
// 动态调用命名范围
|
// 动态调用命名范围
|
||||||
$method = 'scope' . $method;
|
$method = 'scope' . $method;
|
||||||
|
|||||||
Reference in New Issue
Block a user