# 模型開發指南
這里主要講在業務開發中CURD的處理.
## 獲取器 Attr
使用場景:額外需要的字段或者列表需要進一步處理
具體文檔請看[獲取器](http://www.hmoore.net/manual/thinkphp5/135192)
```
// 1 如果一個字段數據庫不存在則使用獲取器,比如小打卡創建了多少天
public function getDurationAttr($value,$data){
// $data 是實例數據
return $time - $data['create_time'];
}
// 該字段需要寫入attr文檔中
// 2 如果一個字段數據庫存在,但是不能直接使用,比如要給手機號碼前加86
public function getTelAttr($value,$data){
// $data 是實例數據
return "+86 ".$value;
}
// 該字段無需加入文檔
```
## 關聯 With
使用場景:有實質性關聯關系
```
// 無論是何關聯關系,都需要在模型中定義
// 一對一 略
// 一對多
public function Sign(){
return $this->hasMany('Sign');
}
// 多對多
public function Fav(){
return $this->belongsToMany('User','xdk_plan_fav'); // attach detach
}
// 關聯的函數都可以使用with在前端使用
```
## 驗證器
```
// 模擬注冊時的數據驗證
public function register(){
$data = request()->only(['username']);
$validate = new \app\xdk\validate\User();
$result = $validate->scene('register')->check($data);
if(!$result){
return json(['error'=>$validate->getError()],422);
}
$result =$this->create($data);
return json($result);
}
```
## 函數
```
// 模型中的所有public屬性的函數都可以在前端執行,因此需要做安全工作
// 可訪問
public function rank(){
}
// 不可訪問
protected function rank(){
}
```
- 首頁
- APP
- 調試
- 部分問題解答
- IM
- 魔工坊APP框架
- 前端
- npm
- MogoAjax
- ES6
- javascript規范
- weui
- 微信小程序
- Mock數據偽造
- Mogo-Css
- O2-Upload
- 七牛圖片處理
- 前端調試
- 后端
- 魔工坊海豚PHP
- 文件上傳
- O2-Comments
- 前端API
- 消息
- Excel導入/導出
- 阿里短信
- dolphinPHP
- Thinkphp
- 海豚PHP
- 創建項目
- 人人商城與海豚同步問題
- mysql
- 發送HTTP請求
- 支付
- 個推
- 接口開發須知
- 生成海報
- 音頻轉換
- openssl
- App上架的故事
- 安卓簽名問題
- 蘋果賬號申請
- 各個平臺上架內容
- 文案小姐姐的文檔
- 微信支付申請流程
- 備案的故事
- 企業支付寶認證
- 微信公眾問題
- 微信開放平臺與上架應用
- 小程序特殊行業所需材料
- 模型文檔模板
- 必讀規范
- 跨域
- 前后端數據通訊接口規范
- Restful風格API規范
- 服務器
- SSL中間證書
- Git篇章
- MogoSDK
- 文檔模板
- PHP
- 使用
- 概念
- User
- 模型
- 文檔書寫
- JS
- 安裝
- 初始化
- 用戶
- 狀態管理
- 查詢
- 執行函數
- 請求
- 上傳
- MogoH5+