#### Model
~~~
$model = new Model();
/**
* 获取当前模型的数据库查询对象
* @access public
* @param bool $baseQuery 是否调用全局查询范围
* @return Query
*/
$model->db($baseQuery = true);
$this->initialize();
/**
* 设置数据对象值
* @access public
* @param mixed $data 数据或者属性名
* @param mixed $value 值
* @return $this
*/
$model->data($data, $value = null);
/**
* 获取对象原始数据 如果不存在指定字段返回false
* @access public
* @param string $name 字段名 留空获取全部
* @return mixed
* @throws InvalidArgumentException
*/
$model->getData($name = null);
/**
* 修改器 设置数据对象值
* @access public
* @param string $name 属性名
* @param mixed $value 属性值
* @param array $data 数据
* @return $this
*/
$model->setAttr($name, $value, $data = []);
/**
* 自动写入时间戳
* @access public
* @param string $name 时间戳字段
* @return mixed
*/
$this->autoWriteTimestamp($name);
/**
* 时间日期字段格式化处理
* @access public
* @param mixed $time 时间日期表达式
* @param mixed $format 日期格式
* @param bool $timestamp 是否进行时间戳转换
* @return mixed
*/
$this->formatDateTime($time, $format, $timestamp = false);
/**
* 数据写入 类型转换
* @access public
* @param mixed $value 值
* @param string|array $type 要转换的类型
* @return mixed
*/
$this->writeTransform($value, $type);
// 获取器 获取数据对象的值
$model->getAttr($name);
/**
* 数据读取 类型转换
* @access public
* @param mixed $value 值
* @param string|array $type 要转换的类型
* @return mixed
*/
$this->readTransform($value, $type);
/**
* 设置需要追加的输出属性
* @access public
* @param array $append 属性列表
* @param bool $override 是否覆盖
* @return $this
*/
$model->append($append = [], $override = false);
/**
* 设置附加关联对象的属性
* @access public
* @param string $relation 关联方法
* @param string|array $append 追加属性名
* @return $this
* @throws Exception
*/
$model->appendRelationAttr($relation, $append);
/**
* 设置需要隐藏的输出属性
* @access public
* @param array $hidden 属性列表
* @param bool $override 是否覆盖
* @return $this
*/
$model->hidden($hidden = [], $override = false);
/**
* 设置需要输出的属性
* @access public
* @param array $visible
* @param bool $override 是否覆盖
* @return $this
*/
$model->visible($visible = [], $override = false);
/**
* 解析隐藏及显示属性
* @access protected
* @param array $attrs 属性
* @param array $result 结果集
* @param bool $visible
* @return array
*/
$this->parseAttr($attrs, &$result, $visible = true);
/**
* 转换子模型对象
* @access protected
* @param Model|ModelCollection $model
* @param $visible
* @param $hidden
* @param $key
* @return array
*/
$this->subToArray($model, $visible, $hidden, $key);
// 转换当前模型对象为数组
$model->toArray();
/**
* 转换当前模型对象为JSON字符串
* @access public
* @param integer $options json参数
* @return string
*/
$model->toJson($options = JSON_UNESCAPED_UNICODE);
/**
* 转换当前模型数据集为数据集对象
* @access public
* @param array|\think\Collection $collection 数据集
* @return \think\Collection
*/
$model->toCollection($collection);
/**
* 关联数据一起更新
* @access public
* @param mixed $relation 关联
* @return $this
*/
$model->together($relation);
/**
* 获取模型对象的主键
* @access public
* @param string $name 模型名
* @return mixed
*/
$model->getPk($name = '');
// 判断一个字段名是否为主键字段
$this->isPk($key);
/**
* 保存当前数据对象
* @access public
* @param array $data 数据
* @param array $where 更新条件
* @param string $sequence 自增序列名
* @return integer|false
*/
$model->save($data = [], $where = [], $sequence = null);
/**
* 保存多个数据到当前数据对象
* @access public
* @param array $dataSet 数据
* @param boolean $replace 是否自动识别更新和写入
* @return array|false
* @throws \Exception
*/
$model->saveAll($dataSet, $replace = true);
/**
* 设置允许写入的字段
* @access public
* @param mixed $field 允许写入的字段 如果为true只允许写入数据表字段
* @return $this
*/
$model->allowField($field);
/**
* 设置只读字段
* @access public
* @param mixed $field 只读字段
* @return $this
*/
$model->readonly($field);
/**
* 是否为更新数据
* @access public
* @param bool $update
* @param mixed $where
* @return $this
*/
$model->isUpdate($update = true, $where = null);
/**
* 数据自动完成
* @access public
* @param array $auto 要自动更新的字段列表
* @return void
*/
$this->autoCompleteData($auto = []);
// 删除当前的记录
$model->delete();
/**
* 设置自动完成的字段( 规则通过修改器定义)
* @access public
* @param array $fields 需要自动完成的字段
* @return $this
*/
$model->auto($fields);
/**
* 设置字段验证
* @access public
* @param array|string|bool $rule 验证规则 true表示自动读取验证器类
* @param array $msg 提示信息
* @param bool $batch 批量验证
* @return $this
*/
$model->validate($rule = true, $msg = [], $batch = false);
/**
* 设置验证失败后是否抛出异常
* @access public
* @param bool $fail 是否抛出异常
* @return $this
*/
$model->validateFailException($fail = true);
/**
* 自动验证数据
* @access protected
* @param array $data 验证数据
* @param mixed $rule 验证规则
* @param bool $batch 批量验证
* @return bool
*/
$this->validateData($data, $rule = null, $batch = null);
// 返回模型的错误信息
$this->getError();
/**
* 注册回调方法
* @access public
* @param string $event 事件名
* @param callable $callback 回调方法
* @param bool $override 是否覆盖
* @return void
*/
Model::event($event, $callback, $override = false);
/**
* 触发事件
* @access protected
* @param string $event 事件名
* @param mixed $params 传入参数(引用)
* @return bool
*/
$this->trigger($event, &$params);
/**
* 写入数据
* @access public
* @param array $data 数据数组
* @param array|true $field 允许字段
* @return $this
*/
Model::create($data = [], $field = null);
/**
* 更新数据
* @access public
* @param array $data 数据数组
* @param array $where 更新条件
* @param array|true $field 允许字段
* @return $this
*/
Model::update($data = [], $where = [], $field = null);
/**
* 查找单条记录
* @access public
* @param mixed $data 主键值或者查询条件(闭包)
* @param array|string $with 关联预查询
* @param bool $cache 是否缓存
* @return static
* @throws exception\DbException
*/
Model::get($data = null, $with = [], $cache = false);
/**
* 查找所有记录
* @access public
* @param mixed $data 主键列表或者查询条件(闭包)
* @param array|string $with 关联预查询
* @param bool $cache 是否缓存
* @return static[]|false
* @throws exception\DbException
*/
Model::all($data = null, $with = [], $cache = false);
/**
* 分析查询表达式
* @access public
* @param mixed $data 主键列表或者查询条件(闭包)
* @param string $with 关联预查询
* @param bool $cache 是否缓存
* @return Query
*/
Model::parseQuery(&$data, $with, $cache);
/**
* 删除记录
* @access public
* @param mixed $data 主键列表 支持闭包查询条件
* @return integer 成功删除的记录数
*/
Model::destroy($data);
/**
* 命名范围
* @access public
* @param string|array|\Closure $name 命名范围名称 逗号分隔
* @internal mixed ...$params 参数调用
* @return Model|Query
*/
Model::scope($name);
// 设置是否使用全局查询范围
Model::useGlobalScope($use);
/**
* 根据关联条件查询当前模型
* @access public
* @param string $relation 关联方法名
* @param mixed $operator 比较操作符
* @param integer $count 个数
* @param string $id 关联表的统计字段
* @return Relation|Query
*/
Model::has($relation, $operator = '>=', $count = 1, $id = '*');
/**
* 根据关联条件查询当前模型
* @access public
* @param string $relation 关联方法名
* @param mixed $where 查询条件(数组或者闭包)
* @return Relation|Query
*/
Model::hasWhere($relation, $where = []);
/**
* 解析模型的完整命名空间
* @access public
* @param string $model 模型名(或者完整类名)
* @return string
*/
$this->parseModel($model);
/**
* 查询当前模型的关联数据
* @access public
* @param string|array $relations 关联名
* @return $this
*/
$model->relationQuery($relations);
/**
* 预载入关联查询 返回数据集
* @access public
* @param array $resultSet 数据集
* @param string $relation 关联名
* @return array
*/
$model->eagerlyResultSet(&$resultSet, $relation);
/**
* 预载入关联查询 返回模型对象
* @access public
* @param Model $result 数据对象
* @param string $relation 关联名
* @return Model
*/
$model->eagerlyResult(&$result, $relation);
/**
* 关联统计
* @access public
* @param Model $result 数据对象
* @param string|array $relation 关联名
* @return void
*/
$model->relationCount(&$result, $relation);
/**
* 获取模型的默认外键名
* @access public
* @param string $name 模型名
* @return string
*/
$this->getForeignKey($name);
/**
* HAS ONE 关联定义
* @access public
* @param string $model 模型名
* @param string $foreignKey 关联外键
* @param string $localKey 关联主键
* @param array $alias 别名定义(已经废弃)
* @param string $joinType JOIN类型
* @return HasOne
*/
$model->hasOne($model, $foreignKey = '', $localKey = '', $alias = [], $joinType = 'INNER');
/**
* BELONGS TO 关联定义
* @access public
* @param string $model 模型名
* @param string $foreignKey 关联外键
* @param string $localKey 关联主键
* @param array $alias 别名定义(已经废弃)
* @param string $joinType JOIN类型
* @return BelongsTo
*/
$model->belongsTo($model, $foreignKey = '', $localKey = '', $alias = [], $joinType = 'INNER');
/**
* HAS MANY 关联定义
* @access public
* @param string $model 模型名
* @param string $foreignKey 关联外键
* @param string $localKey 关联主键
* @return HasMany
*/
$model->hasMany($model, $foreignKey = '', $localKey = '');
/**
* HAS MANY 远程关联定义
* @access public
* @param string $model 模型名
* @param string $through 中间模型名
* @param string $foreignKey 关联外键
* @param string $throughKey 关联外键
* @param string $localKey 关联主键
* @return HasManyThrough
*/
$model->hasManyThrough($model, $through, $foreignKey = '', $throughKey = '', $localKey = '');
/**
* BELONGS TO MANY 关联定义
* @access public
* @param string $model 模型名
* @param string $table 中间表名
* @param string $foreignKey 关联外键
* @param string $localKey 当前模型关联键
* @return BelongsToMany
*/
$model->belongsToMany($model, $table = '', $foreignKey = '', $localKey = '');
/**
* MORPH MANY 关联定义
* @access public
* @param string $model 模型名
* @param string|array $morph 多态字段信息
* @param string $type 多态类型
* @return MorphMany
*/
$model->morphMany($model, $morph = null, $type = '');
/**
* MORPH TO 关联定义
* @access public
* @param string|array $morph 多态字段信息
* @param array $alias 多态别名定义
* @return MorphTo
*/
$model->morphTo($morph = null, $alias = []);
$model->__call($method, $args);
Model::__callStatic($method, $params);
/**
* 修改器 设置数据对象的值
* @access public
* @param string $name 名称
* @param mixed $value 值
* @return void
*/
$model->__set($name, $value);
/**
* 获取器 获取数据对象的值
* @access public
* @param string $name 名称
* @return mixed
*/
$model->__get($name);
// 检测数据对象的值
$model->__isset($name);
/**
* 销毁数据对象的值
* @access public
* @param string $name 名称
* @return void
*/
$model->__unset($name);
$model->__toString();
$model->jsonSerialize();
$model->offsetSet($name, $value);
$model->offsetExists($name);
$model->offsetUnset($name);
$model->offsetGet($name);
// 解序列化后处理
$model->__wakeup();
// 模型事件快捷方法
Model::beforeInsert($callback, $override = false);
Model::afterInsert($callback, $override = false);
Model::beforeUpdate($callback, $override = false);
Model::afterUpdate($callback, $override = false);
Model::beforeWrite($callback, $override = false);
Model::afterWrite($callback, $override = false);
Model::beforeDelete($callback, $override = false);
Model::afterDelete($callback, $override = false);
~~~