# 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接口
- 接口開發
- 插件開發
- 事件開發
- 常用事件
- 插件目錄與開發
- 常用插件
- 支付插件
- 拼團插件
- 新人禮