Skip to content

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.'%');
        }

    }

}

基于 MIT 协议发布