Model层
模型层概述
模型专门处理数据库字段、表名、主键、软删除等。主要存放:模型初始化操作、模型事件操作、模型修改器、获取器、搜索器、模型关联等。
我们在开发中常用的有:模型事件操作、模型修改器、获取器、搜索器、模型关联,尤其是模型关联和搜索器的使用比较广泛。
模型目录结构
所有模型文件存放在app/model目录下,并按功能模块划分为多个子目录:
plaintext
niucloud/
├── app/
│ ├── model/
│ │ ├── addon/ #插件相关模型
│ │ ├── applet/ #小程序相关模型
│ │ ├── dict/ #数据字典模型
│ │ ├── diy/ #自定义页面相关模型
│ │ ├── diy_form/ #自定义表单相关模型
│ │ ├── generator/ #代码生成器相关模型
│ │ ├── member/ #会员相关模型
│ │ ├── pay/ #支付相关模型
│ │ ├── site/ #站点相关模型
│ │ ├── stat/ #统计相关模型
│ │ ├── sys/ #系统相关模型
│ │ ├── verify/ #核销相关模型
│ │ ├── weapp/ #微信小程序相关模型
│ │ └── wechat/ #微信公众号相关模型搜索器
搜索器的作用是用于封装字段(或者搜索标识)的查询条件表达式,一个搜索器对应一个特殊的方法(该方法必须是public类型),方法命名规范为:
search FieldName Attr
fieldName为数据表字段的驼峰转换,搜索器仅在调用withSearch方法的时候触发。
例如需要给SysUser模型定义name字段搜索器可以使用
php
namespace app\model\sys;
use app\dict\sys\UserDict;
use core\base\BaseModel;
use think\model\concern\SoftDelete;
/**
* 系统用户模型
* Class SysUser
* @package app\model\sys
*/
class SysUser extends BaseModel
{
/**
* 账号搜索器
* @param $value
*/
public function searchUsernameAttr($query, $value)
{
if ($value) {
$query->whereLike('username', '%'.$value.'%');
}
}
/**
* 用户实际姓名搜索器
* @param $value
*/
public function searchRealnameAttr($query, $value)
{
if ($value) {
$query->whereLike('real_name', '%'.$value.'%');
}
}
}