#### 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);
~~~