🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### **model属性** | 属性名 | 默认值 | 描述 | 类型 | | --- | --- | --- | --- | | | <h2>属性</h2> | | | | $links| [] | 数据库查询对象池(静态属性) | array| | $connection | []| 数据库配置 | array | | $parent| none | 父关联模型对象 | object | | $query| none | 数据库查询对象 | object | | $name | none | 模型名称(不加前缀) | string | | $table | none | 数据表名称(需要加前缀) | string | | $class | none | 当前类名称 | string | | $event | [] | 回调事件 | array | | $error| none | 错误信息| string| | $validate| none | 字段验证规则 | array| | $pk| none | 数据表主键 复合主键使用数组定义 不设置则自动获取 | string| | $field| []| 数据表字段信息 留空则自动获取 | array | | $except| [] | 数据排除字段 | array| | $readonly| []| 只读字段 | array | | $visible| []| 显示属性 | array | | $hidden| []| 隐藏属性 | array | | $append| []| 追加属性 | array | | $data| []| 数据信息 | array | | $origin| []| 原始数据 | array | | $relation| []| 关联模型 | array | | $auto| []| 保存自动完成列表 | array | | $insert| []| 新增自动完成列表 | array | | $update| []| 更新自动完成列表 | array | | $autoWriteTimestamp| none| 是否需要自动写入时间戳 如果设置为字符串 则表示时间字段的类型 | bool或者string| | $createTime| 'create_time'| 创建时间字段 | string | | $updateTime| 'update_time' | 更新时间字段 | string| | $dateFormat| none| 时间字段取出后的默认时间格式 | ?? | | $type| []| 字段类型或者格式转换 | array | | $isUpdate| false | 是否为更新数据 | bool| | $replace| false| 是否使用Replace | bool| | $force| false | 是否强制更新所有数据 | bool| | $updateWhere| none| 更新条件 | ??| | $failException| false | 验证失败是否抛出异常 | bool| | $useGlobalScope| true| 是全局查询范围 | bool| | $batchValidate| false | 是否采用批量验证 | bool| | $resultSetType| none| 查询数据集对象 | object| | $relationWrite| none | 关联自动写入 | ??| | $initialized| [] | 初始化过的模型 | array | | $readMaster| none | 是否从主库读取(静态属性)(主从分布式有效) | array | ### **model方法** | 方法名(public) | 描述 | 参数 | 返回值| | --- | --- | --- | ---| | | <h2>方法</h2> | | | | readMaster | 是否从主库读取数据(主从分布有效) | ($all = false) |this| | newInstance | 创建新的模型实例 | ($data = [], $isUpdate = false, $where = null) | Model | | getQuery| 获取当前模型的查询对象 | ($buildNewQuery = false) | Query| | db | 获取当前模型的数据库查询对象 | ($useBaseQuery = true, $buildNewQuery = true) |Query| | setParent | 设置父关联对象 | ($model) | this | | getParent | 获取父关联对象 | void | Model | | data | 设置数据对象值 | ($data, $value = null) | this | | getData | 获取对象原始数据 如果不存在指定字段返回false | ($name = null) | mixed | | isAutoWriteTimestamp | 是否需要自动写入时间字段 |($auto) | this | | force | 新是否强制写入数据 而不做比较 | ($force = true) | this | | setAttr | 修改器 设置数据对象值 | ($name, $value, $data = []) | this | | getRelation | 获取当前模型的关联模型数据 | ($name = null)| mixed | | setRelation | 设置关联数据对象值 | ($name, $value) | this | | getAttr| 获取器 获取数据对象的值;如果存在`'get'.$name.'Attr'`方法则调用它,否则查看type属性里是否以键的形式存在,存在即转换类型,否则查看是是createTime和updateTime属性的值,是则转换时间格式,否则将$name当做关联方法执行(该属性为驼峰或小写+下划线格式都可以,最后都会转化为驼峰格式执行) | ($name) | mixed | | append | 设置需要追加的输出属性 | ($append = [], $override = false) | this | | appendRelationAttr | 设置附加关联对象的属性 | ($relation, $append) | this | | hidden | 设置需要隐藏的输出属性 | ($hidden = [], $override = false) | this | | visible | 设置需要输出的属性 | ($visible = [], $override = false) | this | | toArray | 转换当前模型对象为数组 | void | array | | toJson | 转换当前模型对象为JSON字符串 | ($options = JSON_UNESCAPED_UNICODE) | string | | removeRelation | 移除当前模型的关联属性 | void | this | | toCollection | 转换当前模型数据集为数据集对象 | ($collection) | \think\Collection | | together | 关联数据一起更新 | ($relation) | this | | getPk | 获取模型对象的主键 | ($name{模型名} = '') | mixed | | replace | 新增数据是否使用Replace | ($replace = true) | this | | **save** | 保存当前数据对象 | ($data = [], $where = [], $sequence = null) | integer\|false | | getChangedData | 获取变化的数据 并排除只读数据 | void | array | | setInc | 字段值(延迟)增长 | ($field, $step = 1, $lazyTime = 0) | integer\|true | | setDec | 字段值(延迟)递减 | ($field, $step = 1, $lazyTime = 0) | integer\|true | | **saveAll** | 保存多个数据到当前数据对象 | ($dataSet, $replace = true) | array\|false | | allowField | 设置允许写入的字段 | ($field) | this | | except | 设置排除写入的字段 | ($field) | this | | readonly | 设置只读字段 | ($field) | this | | isUpdate | 是否为更新数据 | ($update = true, $where = null) | this | | **delete** | 删除当前的记录 | void | integer | | auto | 设置自动完成的字段( 规则通过修改器定义) | ($fields) | this | | validate | 设置字段验证 | ($rule = true, $msg = [], $batch = false) | this | | validateFailException | 设置验证失败后是否抛出异常 | ($fail = true) | this | | getError | 返回模型的错误信息 | void | string\|array | | event | 注册回调方法 | ($event, $callback, $override = false) | void | | **create** | 写入数据(静态方法) | ($data = [], $field = null) | this | | **update** | 更新数据(静态方法) | ($data = [], $where = [], $field = null) | this | | **get** | 查找单条记录(静态方法) | ($data, $with = [], $cache = false)<br>$data 主键值或者查询条件(闭包)<br>$with 关联预查询 | static[]\|false (**注**:static返回最终运行的那个子类模型对象) | | **all** | 查找所有记录(静态方法) | ($data = null, $with = [], $cache = false) | static[]\|false | | **destroy** | 删除记录(静态方法) | ($data) | integer | | scope | 命名范围(静态方法) | ($name) | Query | | useGlobalScope | 设置是否使用全局查询范围(静态方法) | ($use{布尔}) | Query | | has | 根据关联条件查询当前模型(静态方法) | ($relation, $operator = '>=', $count = 1, $id = '*') | Relation\|Query | | hasWhere | 根据关联条件查询当前模型(静态方法) | ($relation, $where = [], $fields = null) | Relation\|Query | | relationQuery | 查询当前模型的关联数据 | ($relations) | this | | eagerlyResultSet | 预载入关联查询 返回数据集 | (&$resultSet, $relation) | array | | eagerlyResult | 预载入关联查询 返回模型对象 | (&$result, $relation) | Model | | relationCount | 关联统计 | (&$result, $relation) | void | | **hasOne** | HAS ONE 关联定义 | ($model, $foreignKey = '', $localKey = '', $alias = [], $joinType = 'INNER') | HasOne | | **belongsTo** | BELONGS TO 关联定义 | ($model, $foreignKey = '', $localKey = '', $alias = [], $joinType = 'INNER') | BelongsTo | | **hasMany** | HAS MANY 关联定义 | ($model, $foreignKey = '', $localKey = '') | HasMany | | **hasManyThrough** | HAS MANY 远程关联定义 | ($model, $through, $foreignKey = '', $throughKey = '', $localKey = '') | HasManyThrough | | **belongsToMany** | BELONGS TO MANY 关联定义 | ($model, $table = '', $foreignKey = '', $localKey = '') | BelongsToMany | | **morphMany** | ORPH MANY 关联定义 | ($model, $morph = null, $type = '') | MorphMany | | **morphOne** | MORPH One 关联定义 | ($model, $morph = null, $type = '') | MorphOne | | **morphTo** | MORPH TO 关联定义 | ($morph = null, $alias = []) | MorphTo | | __call | 调用当前类不存在或者不可访问的方法时<br>比如:<br>调用model('user')->test('hello')test在当前模型或者model类中不存在,那么查找是否有scop_test('hello'),如果还不存在则调用Query对象里的test方法,Query还不存在,那就查看方法是否是getby+字段名(如getbyusername('tom'),那就是查询username为tom的数据即**动态查询**,如果还找不到则报错) | ($method, $args) | | | __callStatic | 调用当前类不存在或者不可访问的静态方法时触发,用法同__call | ($method, $args) | | | __isset | 调用当前类不存在或者不可访问的属性使用isset() 或者empty()时触发,一般用来在模型中调用表字段 | | | | __unset | 当对不可访问的属性说那个unset()时触发,销毁数据对象的值 | ($name) | | | __toString | 当model对象被当做字符串时触发,将类对象转为json?;如echo model('user') | | | | jsonSerialize | 实现 JsonSerializable 接口 调用 json_encode() 时触发(对模型对象使用json_encode时触发),转成数组?| | | | offsetSet | 实现ArrayAccess的方法 ,以数组的方式设置模型属性时触发如:$user['data'] = $data;触发setAttr方法 | | | | offsetExists | 实现ArrayAccess的方法 isset($user['data'])时触发__isset方法 | | | | offsetUnset | 实现ArrayAccess的方法 unset($user['data'])时触发__unset方法 | | | | offsetGet | 实现ArrayAccess的方法 $user['data']时触发getAttr方法 | | | | __set | 设置不存在的属性时触发修改器,存在【get字段名Attr】则返回字段值,不存在则查询关联数据并保存 | $name, $value) | void | | __get | 调用不存在的属性时触发获取器getAttr() | ($name) | void | | | | | | ## -----------------------------------------模型事件快捷方法(都为静态方法)-------------------------------------------------------- beforeInsert($callback, $override = false) afterInsert($callback, $override = false) beforeUpdate($callback, $override = false) afterUpdate($callback, $override = false) beforeWrite($callback, $override = false) afterWrite($callback, $override = false) beforeDelete($callback, $override = false) afterDelete($callback, $override = false) ## **HasOne** | 属性名 | 默认值 | 描述 | 类型 | | --- | --- | --- | --- | | | <h2>属性</h2> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 方法名(public) | 描述 | 参数 | 返回值| | --- | --- | --- | ---| | | <h2>方法</h2> | | | | | | | | | | | | | | | | | | | | | | | kasOne与BelongsTo继承至OneToOne OneToOne、HasMany、HasManyThrough、BelongsToMany、MorphMany、MorphOne、MorphOne、MorphTo继承至Relation ## **Relation** | 方法名(public) | 描述 | 参数 | 返回值| | --- | --- | --- | ---| | | <h2>方法</h2> | | | | getParent | 获取关联的所属模型 | void | Model | | getModel | 获取当前的关联模型对象实例 | void | Model | | getQuery | 获取关联的查询对象 | void | Query | | selfRelation | 设置当前关联为自关联 | ($self = true) | this | | isSelfRelation | 当前关联是否为自关联 | void | bool | | __call | 获取Query中的方法 | ($method, $args) | mixed | | | | | | | | | | | ## **OneToOne** | 方法名(public) | 描述 | 参数 | 返回值| | --- | --- | --- | ---| | | <h2>方法</h2> | | | | joinType | 设置join类型 | ($type) | this | | eagerly | 预载入关联查询(JOIN方式) | (Query $query, $relation, $subRelation, $closure, $first) | void | | eagerlyResultSet | 预载入关联查询(数据集) | (&$resultSet, $relation, $subRelation, $closure) | void | | eagerlyResult | 预载入关联查询(数据) | (&$result, $relation, $subRelation, $closure) | void | | save | 保存(新增)当前关联数据对象 | ($data) | Model\|false | | setEagerlyType | 设置预载入方式 | ($type) | this | | getEagerlyType | 获取预载入方式 | void | integer | | bind | 绑定关联表的属性到父模型属性 | ($attr) | this | | getBindAttr | 获取绑定属性 | void | array | | relationCount | 关联统计 | ($result, $closure) | integer | ## **HasOne** | 方法名(public) | 描述 | 参数 | 返回值| | --- | --- | --- | ---| | | <h2>方法</h2> | | | | getRelation | 延迟获取关联数据 | ($subRelation = '', $closure = null) | array\|false\|\PDOStatement\|string\|Model | | has | 根据关联条件查询当前模型 | void | Query | | hasWhere | 根据关联条件查询当前模型 | ($where = [], $fields = null) | Query | ## **BelongsTo** | 方法名(public) | 描述 | 参数 | 返回值| | --- | --- | --- | ---| | | <h2>方法</h2> | | | | getRelation | 延迟获取关联数据 | ($subRelation = '', $closure = null) | array\|false\|\PDOStatement\|string\|Model | | has | 根据关联条件查询当前模型 | void | Query | | hasWhere | 根据关联条件查询当前模型 | ($where = [], $fields = null) | Query | | associate | 添加关联数据 | e($model) | Model | | dissociate | 注销关联数据 | void | Model | ## **HasMany** | 方法名(public) | 描述 | 参数 | 返回值| | --- | --- | --- | ---| | | <h2>方法</h2> | | | | getRelation | 延迟获取关联数据 | ($subRelation = '', $closure = null) | array\|false\|\PDOStatement\|string\|Model | | has | 根据关联条件查询当前模型 | void | Query | | hasWhere | 根据关联条件查询当前模型 | ($where = [], $fields = null) | Query | | eagerlyResultSet | 预载入关联查询 | (&$resultSet, $relation, $subRelation, $closure) | void | | eagerlyResult | 预载入关联查询 | (&$result, $relation, $subRelation, $closure) | void | | relationCount | 关联统计 | ($result, $closure) | integer | | getRelationCountQuery | 创建关联统计子查询 | ($closure, &$name = null) | string | | save | 保存(新增)当前关联数据对象 | ($data) | Model\|false | | make | 创建关联对象实例 | ($data = []) | Model | | saveAll | 批量保存当前关联数据对象 | (array $dataSet) | integer | ## **xxx** | 方法名(public) | 描述 | 参数 | 返回值| | --- | --- | --- | ---| | | <h2>方法</h2> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ## **xxx** | 方法名(public) | 描述 | 参数 | 返回值| | --- | --- | --- | ---| | | <h2>方法</h2> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ## **xxx** | 方法名(public) | 描述 | 参数 | 返回值| | --- | --- | --- | ---| | | <h2>方法</h2> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ## **xxx** | 方法名(public) | 描述 | 参数 | 返回值| | --- | --- | --- | ---| | | <h2>方法</h2> | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |