关于模型;跟上篇文章thinkphp的目录结构设计经验总结写控制器一个道理;为了尽量避免改动到框架;

首先我们是要有一个BaseModel.class.php作为我们的基础model;

我会在BaseModel中定义增删改的方法如下;

<?php
namespace Common\Model;
use Think\Model;
/*** 基础model*/
class BaseModel extends Model{/*** 添加数据* @param    array    $data    数据 * @return   integer           新增数据的id */public function addData($data){$id=$this->add($data);return $id;}/*** 修改数据* @param    array    $map    where语句数组形式 * @param    array    $data   修改的数据 * @return    boolean         操作是否成功*/public function editData($map,$data){$result=$this->where($map)->save($data);return $result;}/*** 删除数据* @param    array    $map    where语句数组形式* @return   boolean          操作是否成功*/public function deleteData($map){$result=$this->where($map)->delete();return $result;}}

为每张表都建一个model;统一放在/Application/Common/Model/目录下即可;

然后所有的模型都继承BaseModel;

以后的增增删改如果没有特殊的需求;就可以直接调用addData、editData、deleteData;

如果有特殊需求的;就在model中重新定义以上方法;

这样的实际意义就等于在不改动框架的model的前提下扩展了model中的方法;

重点想说的是;所有的增删改;都统一用D函数而不要用M函数实例化model然后调用这3个方法;

这样做的好处是;当以后改表了;不用全世界的去找都那些地方调用了add、save、delete一一去改;

增删改都说了;那至于查;

1:强烈建议所有的where条件统一使用数组格式的;避免使用字符串格式的where;

2:竖着排版;

竖着排列;要明显优于横着排序;自行对比上下那种更便于阅读;高下立见;

3:固定按照 field、alias、join、where、order、limit 、select ;

为什么要按照这个顺序呢?因为这跟我们正常拼sql的顺序一致;

SELECTu.id,s.*
FROMbjy_student AS s
JOIN bjy_users AS u ON s.uid = u.id
WHEREs. STATUS = 1
ORDER BYdate
LIMIT 10;

4:join表的时候;起别名统一使用表的第一个字母;如果两张表的第一个字母一样;那就前两个字母;依次类推;

这样规范了以后;将大大提高检查阅读代码的效率;

本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客http://www.baijunyao.com

转载于:https://blog.51cto.com/shuaibai123/1773275

thinkphp的model模型的设计经验总结相关推荐

  1. model模型php,thinkphp的model模型的设计经验总结

    关于模型:跟上篇文章thinkphp的目录结构设计经验总结写控制器一个道理:为了尽量避免改动到框架: 首先我们是要有一个BaseModel.class.php作为我们的基础model: 我会在Base ...

  2. LINQ快速开发设计最佳实践(二) 构建Model模型

    一.摘要 第一篇文章我简要介绍了项目的设计框架和LINQ实现思想. 本篇文章将是最实际和具有技巧性的地方, 就是如何创建LINQ TO SQL 的模型对象. 二.前言 1.LINQ与LINQ TO S ...

  3. Xilinx基于模型的设计工具—Model Composer

    Model Composer 是一款基于模型的设计工具,不仅能够在 MathWorks Simulink® 环境中进行快速设计探索,而且还可通过自动代码生成加速基于 Xilinx 全可编程器件的生产. ...

  4. Django基础核心技术之Model模型的介绍与设计

    Django基础核心技术之Model模型的介绍与设计 原创: Yunbo Shi Python Web与Django开发 2018-05-03 Django网络应用开发的5项基础核心技术包括模型(Mo ...

  5. Tesla Model S的设计失误

    这幅美丽的图片,就是红极一时的Tesla电动车Model S的内景.然而你有没有发现,其中有一些不大对劲的地方?虽然我看好电动汽车,它们环保,安静,运动敏捷,然而我发现Tesla的这款Model S, ...

  6. 招标php,基于ThinkPHP框架招投标平台架构设计.doc

    基于ThinkPHP框架招投标平台架构设计 基于ThinkPHP框架招投标平台架构设计 摘要:本文基于招投标平台的需求分析,比较了国内外流行的几种MVC框架,选择ThinkPHP框架进行架构设计,后台 ...

  7. 【转】Tesla Model S的设计失误

    Tesla Model S的设计失误 这幅美丽的图片,就是红极一时的Tesla电动车Model S的内景.然而你有没有发现,其中有一些不大对劲的地方?虽然我看好电动汽车,它们环保,安静,运动敏捷,然而 ...

  8. web设计经验一 提升移动设备响应式设计的8个建议

    今天看到一些关于web设计的一些建议和设计经验,拿出来分享分享. 第一篇: 提升移动设备响应式设计的8个建议 一.直观性和易用性 在使用移动设备时,对于杂乱.复杂或者不直观的设计造成的混乱不佳的用户体 ...

  9. Django中的Model模型

    Model模型 模型是你的数据的唯一的.权威的信息源.它包含你所储存数据的必要字段和行为. 通常,每个模型对应数据库中唯一的一张表. 每个模型都是django.db.models.Model的一个Py ...

  10. matlab建立的发动机的模型,奇瑞使用基于模型的设计实现发动机管理系统软件的自主开发...

    奇瑞采用了基于模型的设计,并请 MathWorks 工程师来协助其工程团队掌握 MATLAB® 和 Simulink® 的运用. 奇瑞团队使用 Microsoft® Word 定义系统需求.他们基于这 ...

最新文章

  1. autoware中lgsvl Simulator安装与使用:LGsvl Simulator 2021.2.1版(九)
  2. 上海松江大学城学计算机,上海松江大学城有几所学校?
  3. Docker容器导入导出
  4. 【iHMI43 4.3寸液晶模块】demo例程(版本1.03)发布
  5. nginx php pathinfo,Nginx解决PATH_INFO新解决办法
  6. mac版crt8.0.2打开无响应怎么办_Mac电脑程序无响应怎么办?教你强制退出无响应程序...
  7. mySQL危险命令_MYSQL教程Linux系统中最危险的10条命令
  8. 服务器怎么修改sqlroot密码,mysql设置更改root密码、mysql服务器的连接、mysql常用命令的图解...
  9. ds哈希查找--链地址法_Hash冲突之开放地址法
  10. 幻灯片插入smartArt
  11. SQL不同类型分组排序
  12. 2022新版海螺影视主题模板M3.1全解密版本多功能苹果CMSv10后台自适应主题
  13. 二、Node 多版本管理
  14. 「正在直播」2018人工智能怎么玩?中科院专家山世光、360首席科学家颜水成等技术大咖来教你!...
  15. 华硕fx80ge安装linux,华硕FX80GE火陨版(i7 8750H)笔记本u盘重装系统win8教程
  16. 适用于2019的最佳WordPress Form Builder插件
  17. HDUnbsp;1533nbsp;Goingnbsp;Homenbsp;(KM算法)
  18. 策略与计费控制(PCC)流程与信令流程
  19. 机房计算机和家用计算机区别,谈计算机机房的管理与维护
  20. android dex文件过多,Android Studio中的多个Dex文件异常

热门文章

  1. sublime配置markdown
  2. 值得一看的50条从商之道
  3. 给金额字符串加逗号,例如:30000000000.50-30,000,000,000.50
  4. 兼容M1芯片 Denise Audio poltergate Mac - 侧链均衡器
  5. 怎么才能获取NTFS for mac注册码呢?
  6. haproxy + keepalived 使用 kubeadm 部署高可用Kubernetes 集群
  7. CentOS 7 Docker部署phpMyAdmin网站
  8. Vue 过滤器filters
  9. Activity onSaveInstanceState(Bundle)
  10. Navicat for mysql 远程连接 mySql数据库10061、1045错误