# model数据业务层
model层用于书写业务逻辑。
## app下model层结构
```
├─model
│ article 文章业务
│ express 配送业务
│ games 游戏业务
│ goods 商品业务
│ image 图片处理业务
│ member 会员相关业务
│ order 订单相关业务
│ share 分享相关业务
│ shop 店铺相关业务
│ stat 数据统计业务
│ store 门店自提相关业务
│ system 基础系统相关业务
│ upload 上传相关业务
│ verify 核销相关业务
│ web 网站整体业务
```
**一,model层书写要继承BaseModel,用于处理数据的返回**
~~~
/**
* 文章
*/
class Article extends BaseModel
{
}
~~~
**一,mode层调用数据库需要model(表),用于调用数据库,例如添加文章**
~~~
/**
* 添加文章
* @param $data
* @return array
*/
public function addArticle($data)
{
$data[ 'create_time' ] = time();
model('article')->startTrans();
try {
//添加文章
model('article')->add($data);
//更新分组文章数等信息
if ($data[ 'status' ] == 1) {
model('article_category')->setInc([ [ 'category_id', '=', $data[ 'category_id' ] ] ], 'article_num');
} else {
model('article_category')->setInc([ [ 'category_id', '=', $data[ 'category_id' ] ] ], 'article_num');
}
model('article')->commit();
return $this->success();
} catch (\Exception $e) {
model('article')->rollback();
return $this->error('', $e->getMessage());
}
}
~~~
model(表)实际是调用了基础的model类,路径:model/Model.php
model类实现了数据表的增删改查,分页列表,关联表查询,统计查询等业务,不需要调用thinkphp的连贯操作,这样书写更加简洁
~~~
<?php
namespace app\model;
use think\facade\Db;
use think\Validate;
use think\facade\Cache;
/**
* 模型基类
*/
class Model
{
// 查询对象
private static $query_obj = null;
protected $table = '';
//验证规则
protected $rule = [];
//验证信息
protected $message = [];
//验证场景
protected $scene = [];
//错误信息
protected $error;
protected $is_cache = 1;
public function __construct($table = '')
{
}
public function isCache()
{
}
/**
* 获取列表数据
* @param array $condition
* @param string $field
* @param string $order
* @param number $page
* @param array $join
* @param string $group
* @param string $limit
* @param string $data
* @return mixed
*/
final public function getList($condition = [], $field = true, $order = '', $alias = 'a', $join = [], $group = '', $limit = null);
/**
* 获取全部数据
*/
final public function all();
/**
* 获取分页列表数据
* @param unknown $where
* @param string $field
* @param string $order
* @param number $page
* @param string $list_rows
* @param string $alias
* @param unknown $join
* @param string $group
* @param string $limit
*/
final public function pageList($condition = [], $field = true, $order = '', $page = 1, $list_rows = PAGE_LIST_ROWS, $alias = 'a', $join = [], $group = null, $limit = null);
/**
* 获取分页列表数据(按照数量查询分页)
* @param unknown $where
* @param string $field
* @param string $order
* @param number $page
* @param string $list_rows
* @param string $alias
* @param unknown $join
* @param string $group
* @param string $limit
*/
final public function rawPageList($condition = [], $field = true, $order = '', $page = 1, $list_rows = PAGE_LIST_ROWS, $alias = 'a', $join = [], $group = null, $limit = null);
/**
* 获取单条数据
* @param array $where
* @param string $field
* @param string $join
* @param string $data
* @return mixed
*/
final public function getInfo($where = [], $field = true, $alias = 'a', $join = null, $data = null);
/**
* 得到某个字段的值
* @access public
* @param array $where 条件
* @param string $field 字段名
* @param mixed $default 默认值
* @param bool $force 强制转为数字类型
* @return mixed
*/
final public function getValue($where = [], $field = '', $default = null, $force = false);
/**
* 新增数据
* @param array $data 数据
* @param boolean $is_return_pk 返回自增主键
*/
final public function add($data = [], $is_return_pk = true);
/**
* 新增多条数据
* @param array $data 数据
* @param int $limit 限制插入行数
*/
final public function addList($data = [], $limit = null);
/**
* 更新数据
* @param array $where 条件
* @param array $data 数据
*/
final public function update($data = [], $where = []);
/**
* 删除数据
* @param array $where 条件
*/
final public function delete($where = []);
/**
* 统计数据
* @param array $where 条件
* @param string $type 查询类型 count:统计数量|max:获取最大值|min:获取最小值|avg:获取平均值|sum:获取总和
*/
final public function stat($where = [], $type = 'count', $field = 'id');
/**
* SQL查询
* @param string $sql
* @return mixed
*/
final public function query($sql = '');
/**
* 返回总数
* @param unknown $where
*/
final public function getCount($where = [], $field = '*', $alias = 'a', $join = null, $group = null);
/**
* 返回总数
* @param unknown $where
*/
final public function getSum($where = [], $field = '', $alias = 'a', $join = null);
/**
* SQL执行
*/
final public function execute($sql = '');
/**
* 查询第一条数据
* @param array $condition
*/
final function getFirstData($condition, $field = '*', $order = "");
/**
* 查询第一条数据
* @param array $condition
*/
final function getFirstDataView($condition, $field = '*', $order = "", $alias = 'a', $join = [], $group = null);
/**
* 事物开启
*/
final public function startTrans();
/**
* 事物提交
*/
final public function commit();
/**
* 事物回滚
*/
final public function rollback();
/**
* 自增数据
* @param array $where
* @param $field
* @param int $num
* @return int
* @throws \think\db\exception\DbException
*/
final public function setInc($where, $field, $num = 1);
/**
* 自减数据
* @param $where
* @param $field
* @param int $num
* @return int
* @throws \think\db\exception\DbException
*/
final public function setDec($where, $field, $num = 1);
/**
* 获取最大值
* @param array $where
* @param $field
* @return mixed
*/
final public function getMax($where, $field);
~~~
- 序言
- 安装教程
- 运行环境
- 安装手册
- 基础
- 前期准备
- 伪静态配置
- 后台目录结构
- uniapp(手机端)目录结构
- 开发命名规范
- 控制器命名规范
- model层命名规范
- 前端(管理页面)命名规范
- 提示面板
- 表单
- uniapp(手机端)命名规范
- api接口命名规范
- 架构
- 入口文件
- config设置
- app应用目录
- component(自定义模板组件)
- model层(数据业务层)
- 数据库操作
- job(消息队列)
- event(事件)
- request(请求对象)
- common(公共函数)
- log(日志处理)
- lang(语言包)
- addon插件
- 数据字典
- 系统基础表
- 配送相关表
- 商品相关表
- 网站设置相关
- 会员相关表
- 订单相关表
- 营销(组合套餐)
- 营销(砍价)
- 营销(优惠券)
- 营销(满减)
- 营销(拼团)
- 营销(秒杀)
- 店铺相关表
- 微信相关表
- 门店相关表
- 结算相关表
- 应用(分销)
- 功能模块
- 商品模块
- 会员模块
- 订单模块
- 数据统计
- 消息队列
- 支付模块
- 短信模块
- 客服
- api接口
- 接口开发
- 插件开发
- 事件开发
- 常用事件
- 插件目录与开发
- 常用插件
- 支付插件
- 拼团插件
- 新人礼