文档章节

thinkphp的model模型的设计经验总结

白俊遥
 白俊遥
发布于 2016/05/14 11:35
字数 618
阅读 25
收藏 1

关于模型;跟上篇文章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的顺序一致;

SELECT
    u.id,
    s.*
FROM
    bjy_student AS s
JOIN bjy_users AS u ON s.uid = u.id
WHERE
    s. STATUS = 1
ORDER BY
    date
LIMIT 10;

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

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

 

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

© 著作权归作者所有

共有 人打赏支持
白俊遥
粉丝 15
博文 58
码字总数 28701
作品 1
朝阳
程序员
THINKPHP的cron计划任务的实现

THINKPHP的cron计划任务的实现,利用THINKPHP自带的cli,加上数据库执行记录(记录任务的报错,成功)。 在服务器cron定时任务在网站目录(不是网站根目录)执行php cron.php,网站根目录为Publi...

xinson
2015/05/19
0
1
ThinkPHP 3.2 版本升级了哪些内容

ThinkPHP 3.2 版本升级了哪些内容 ThinkPHP 3.2发布了挺长时间了,这里也总结下这次ThinkPHP 3.2到底发生了哪些变化,方便程序员们进行开发。 前言 ThinkPHP 3.2 基于 ThinkPHP 3.1 的基础上...

thinkyoung
2015/10/15
0
0
thinkphp模型层Model、Logic、Service讲解

thinkphp模型层Model、Logic、Service讲解 时间:2014-08-24 15:54:56 编辑:一切随缘 文章来源:php教程网 已阅读:771 次 js特效源码,就从这里开始 我有疑问【PHP186论坛提问】 jS游戏桌球...

thinkyoung
2015/09/01
0
0
ThinkPHP 3.2 的变化

前言 ThinkPHP 3.2 基于 ThinkPHP 3.1 的基础上有许多的变化,我觉得这个版本应该设立为 ThinkPHP 4.0 而不是什么 3.2。如果你在使用 ThinkPHP 3.1 请勿贸然迁移升级,这可不是简单的覆盖下文...

林玮晶
2015/03/02
0
0
模型类的命名以及和数据表的对应关系

在ThinkPHP默认的规则里面,模型类的命名是有一定的规则的,我们来举一些简单的例子来说明下。 例如,在公司开始开发的时候在数据库里面创建了三个表,分别是:thinkuser、thinkgroup和 thin...

WangEven
2012/05/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
2
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
7
3
java -jar运行内存设置

java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX:CompressedClassSpaceSize=6...

李玉长
今天
4
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

冯文议
今天
2
0
RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部