🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> 纯后台使用的模型统一放在`/application/admin/model`目录下,多个模块公用的模型放在`/application/common/model`目录下。 ## 模型基类 模型基类为`Model`,继承自`\think\Model`,所有后台模型都继承`Model`。 ``` //后台基础模型 namespace app\admin\model; use think\db\Query; class Model extends \think\Model { //是否字段,使用场景:用户的是否冻结,文章是否为热门等等。 public const BOOLEAN_TEXT = [0 => '否', 1 => '是']; //是否为软删除 public $softDelete = true; //软删除字段默认值 protected $defaultSoftDelete = 0; //可搜索字段 protected $searchField = []; //可作为条件的字段 protected $whereField = []; //禁止删除的数据id public $noDeletionId = []; /** * 查询处理 * @var Query $query * @var array $param */ public function scopeWhere($query, $param) { //关键词like搜索 $keywords = $param['_keywords'] ?? ''; if (!empty($keywords) && count($this->searchField) > 0) { $this->searchField = implode('|', $this->searchField); $query->where($this->searchField, 'like', '%' . $keywords . '%'); } //字段条件查询 if (count($this->whereField) > 0 && count($param) > 0) { foreach ($param as $key => $value) { if (!empty($value) && in_array($key, $this->whereField)) { $query->where($key, $value); } } } //排序 $order = $param['_order'] ?? ''; $by = $param['_by'] ?? 'desc'; $query->order($order ?: 'id', $by ?: 'desc'); } //状态获取器 public function getStatusTextAttr($value, $data) { return self::BOOLEAN_TEXT[$data['status']]; } } ``` ## 其他模型 ### 后台用户模型(AdminUser) `AdminUser`为后台用户模型,包含新增事件和更新事件的密码处理,查询当前用户拥有的权限和显示的菜单等功能。 ### 后台角色模型(AdminRole) `AdminRole`为后台角色模型。 ### 后台菜单/权限模型(AdminMenu) `AdminMenu`为后台菜单(权限)模型。 ### 后台用户模型(AdminLog) `AdminLog`为后台操作日志模型。