- 🏠 简介
- 📥 源码下载
- 🚀 安装指南
- 🔧 niucloud (服务端)
- 🖥️ admin (后台管理端)
- 📱 uni-app(手机端前端)
- 🌐 web端(PC前端)
- ⚙️ 代码生成器
- ⚙️ 配置手册
- 📚 使用手册
- 🔄 版本更新
-
❓ 常见问题
- 服务器问题
- 安装问题
- 使用问题
- 版本问题
-
其他问题
- 怎么添加菜单,添加了菜单不出现怎么回事
- 站点site端(租户端、商家端)和saas管理端(平台端)究竟啥意思,有啥区别
- 框架中是有订单表order,假如开发一个商城插件,请问商城的订单数据是不是重新搞一个订单表shop_order
- 有些支付平台是绑定回调唯一网址或目录,如果有几个开发者开发插件都有支付那这块怎么解决?
- 站点过期,可以登录,这样对吗?
- 计划任务怎么启动啊
- Git多分支开发,切换分支
- 安装应用出现is_dir()报错处理方案
- 绑定授权时出现“请求来源产品与授权产品不一致”解决方案
- “未找到admin源码所在目录”的解决方案
- 页面装修本地开发环境配置
- 接口请求错误处理方案
- 未获取到授权信息问题处理方案
- 腾讯地图配置
- 请求超时问题处理方案
- 下载应用时提示找不到zip解决方案
- 怎么关闭开发调试模式
- 获取数据失败问题处理方案
- 框架安装后,访问域名无法进入admin端(多数发生在本地)
- 底部导航失效问题
- 开放平台小程序审核通过发布失败问题
- 先升级插件后升级框架,导致云编译报debounce的错误
- 微信公众号自动回复不通
- 如何修改访问域名默认跳转端口
- 插件与框架的版本兼容问题处理方案
- 升级提示mkdir()处理方案
- 云编译时node.js内存不足导致内存溢出处理方案
- 报错Allowed memory size of ** bytes exhausted (tried to allocate ** bytes)处理方法
- Mysql修改sql_mode模式
- 框架1.0.2之前升级最新版错误Undefined array key "content"
- 安装插件提示不适配框架版本的处理
Model层
模型层概述
模型专门处理数据库字段、表名、主键、软删除等。主要存放:模型初始化操作、模型事件操作、模型修改器、获取器、搜索器、模型关联等。
我们在开发中常用的有:模型事件操作、模型修改器、获取器、搜索器、模型关联,尤其是模型关联和搜索器的使用比较广泛。
模型目录结构
所有模型文件存放在app/model目录下,并按功能模块划分为多个子目录:
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字段搜索器可以使用
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.'%');
}
}
}