# 3.3 模型层开发 :::tip 概述 模型层负责定义数据库表的映射关系,继承 BaseModel 后自动获得软删除和审计字段能力。 ::: ## 模型文件位置 ```text app/model/Example.php ``` ## 完整代码(来自项目实际代码) ```php softDelete();` | | 批量软删除 | 批量设置 `is_delete=1` | `Example::batchSoftDelete([1,2,3]);` | | 审计字段-创建 | 自动填充 `create_user` 和 `create_time` | `Example::create([...])` 时自动填充 | | 审计字段-更新 | 自动填充 `update_user` 和 `update_time` | `$model->save([...])` 时自动填充 | ## 查询已删除数据 ```php // 查询单条(包括已删除) $example = Example::withoutGlobalScope(['soft_delete'])->find($id); // 查询所有(包括已删除) $all = Example::withoutGlobalScope(['soft_delete'])->select(); ``` ## 简单模型 vs 复杂模型 :::tip 模型层职责 模型层只负责表映射和关联关系,不包含业务逻辑。所有查询条件、排序、唯一性校验等都由 Logic 层配置。 ::: ### 简单模型(如 Example) 只需声明表名,所有逻辑由 Logic 层配置: ```php class Example extends BaseModel { protected $name = 'example'; } ``` ### 复杂模型(如 Role) 包含关联关系: ```php class Role extends BaseModel { protected $name = 'role'; /** * 关联菜单(多对多) * 通过 role_menu 中间表关联 */ public function menus() { return $this->belongsToMany(Menu::class, 'role_menu', 'menu_id', 'role_id'); } } ```