🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 模型开发指南 这里主要讲在业务开发中CURD的处理. ## 获取器 Attr 使用场景:额外需要的字段或者列表需要进一步处理 具体文档请看[获取器](https://www.kancloud.cn/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(){ } ```