> ### 模型定义
* [ ] 模型采用“一个主模型”关联若干子模型的开发方式
* 一个主模型并不等于一张表或一个模型,可能会是多个表和模型,通过模型关联组合为一个模型
* 主模型的数据由基类自动维护,我们只关心扩展模型的数据维护
* 每张主表会有一个标识mark字段,通过此字段可以将主表进行横向切分,将切分出来的主表单独维护,方便阅读和后期管理
* 另外,如何主模型存在软删除字段,那么关联模型也必须加入软删除字段,不然数据会有丢失
* 主表和扩展表之间采用关联模型进行维护
> ### 开发
* [ ] 开发一个主模型的步骤
1. 只需要继承BaseModel即可 ,然后专心维护自己模型的逻辑
`快速生成主模型的方式,根目录下运行命令行:php think mainmodel Test , 将Test换成自己模型的名字`
```
BaseModel基类中做的事情:
1、定义$mark 标识属性, 默认为null ,此属性用来区分不同的扩展表,需要在切分后的主模型中重写
2、定义全局的查询范围标识 , protected $globalScope = ['mark'];
3、全局添加查询条件 public function scopeMark($query)
4、当主模型进行写入操作时,自动注入标识 public static functionon BeforeInsert($model)
```
2. 将主模型进行水平切分,其实与定义的主模型完全一致,只是加入了自定义的标识mark,然后专心维护该模型逻辑。