所有模型均需要放置在application\common\model目录下,以便各个模块使用 所有模型均要继承\app\common\model\Common模型,如: ~~~ <?php namespace app\common\model; /** * 测试模型 */ class Test extends Common { public function test(){} } ~~~ 所有模型默认具有以下通用方法 ## 列表通用模型方法 ``` /** * 通用查询列表方法 * @param $post * @return mixed * @throws \think\exception\DbException */ public function tableData($post) { if(isset($post['limit'])){ $limit = $post['limit']; }else{ $limit = config('paginate.list_rows'); } $tableWhere = $this->tableWhere($post); $list = $this->field($tableWhere['field'])->where($tableWhere['where'])->order($tableWhere['order'])->paginate($limit); $data = $this->tableFormat($list->getCollection()); //返回的数据格式化,并渲染成table所需要的最终的显示数据类型 $re['code'] = 0; $re['msg'] = ''; $re['count'] = $list->total(); $re['data'] = $data; return $re; } ``` ``` /** * 根据输入的查询条件,返回所需要的where * @author sin * @param $post * @return mixed */ protected function tableWhere($post) { $result['where'] = []; $result['field'] = "*"; $result['order'] = []; return $result; } /** * 数据查询后格式化方法 * @param $list * @return mixed */ protected function tableFormat($list) { return $list; } ``` ## 软删除 模型文件中需要增加以下定义: ``` use SoftDelete; //软删除标记字段 protected $deleteTime = 'isdel'; ``` 定义好之后,即可使用以下方法对数据进行软删除 ``` // 软删除 User::destroy(1); // 真实删除 User::destroy(1,true); $user = User::get(1); // 软删除 $user->delete(); // 真实删除 $user->delete(true); ``` ## 添加更新时间自动填充 ``` protected $autoWriteTimestamp = true; //创建时间 protected $createTime = 'ctime'; //更新时间 protected $updateTime = 'utime'; ``` ## 数据库表文件定义规范 1. 有自增主键的表,主键建议使用id 作为表主键名称,其它地方表中调用该表主键时为 “表名_id” 2. 创建时间统一为 ctime 3. 更新时间统一为 utime 4. 软删除标记字段统一为 isdel 5. 类型字段,例如:性别、状态等建议使用tinyint类型 6. 表排序规则统一为:utf8mb4_general_ci 7. 所有表使用InnoDB作为数据库引擎 >[danger] 表中定义的类型,建议都在模型中以常量的形式定义出来,例如: > const MARKETABLE_UP = 1; //上架 const MARKETABLE_DOWN = 2;//下架 const VIRTUAL_YES = 2;//虚拟商品 const VIRTUAL_NO = 1;//普通商品 在使用时尽量避免直接使用1、2、3这样的数字,尽量使用 模型::常量进行调用,例如 self::MARKETABLE_DOWN 或 $goodsModel = new Goods(); $goodsModel::MARKETABLE_DOWN