文档章节

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

白俊遥
 白俊遥
发布于 2016/05/14 11:35
字数 618
阅读 28
收藏 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
作品 3
朝阳
程序员
私信 提问
thinkphp开发的框架的简单介绍

  说起来现在的互联网时代中用到thinkphp的地方也是很多的,这也是一项技术活,开发框架也是比较有难度的,下面就给大家简单地介绍一下。   ThinkPHP是一个免费开源的,快速、简单的面向...

孙智绘
2012/06/28
40
0
php 部署错误, 提示为数据库表的问题

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'thinkphp.think_config' doesn't exist 错误位置 FILE: /var/www/html/ThinkPHP/Library/Think/Db/Driver.class.php  LINE: 1......

一一无念
2016/01/05
931
3
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
急求:linux服务器上xampp环境下使用thinkphp3.2.3连接不到mysql

大神过来看一下哈,我本地用的是window xp系统,wampserver的环境,thinkphp框架,编写的一个小网站,上传到linux服务器上面,就打不开了,会出现如下的错误: :( SQLSTATE[HY000] [2002] Co...

kuangkuang1
2015/11/14
3.5K
10

没有更多内容

加载失败,请刷新页面

加载更多

乱入Linux界的我是如何学习的

欢迎来到建哥学Linux,咳!咳!咳!开个玩笑哈,我是一个IT男,IT界的入门选手,正在学习Linux。 在之前,一直想进军IT界,学习IT技术,但是苦于没有人指导,也不知道学什么,最开始我自己在...

linuxprobe16
37分钟前
1
0
OSChina 周日乱弹 —— 没时间 没头发 但有钱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @开源中国总经办主任 :分享齐一的单曲《这个年纪》 《这个年纪》- 齐一 手机党少年们想听歌,请使劲儿戳(这里) @肿肿卷 :我真的可以睡一天...

小小编辑
今天
45
4
Django进阶 1.1 ORM基础—ORM 1.2.1 增删改查之查询 1.2.2 删改增 (1) 1.2.3 删改增 (2)

ORM基础 ORM是Django操作数据库的API,Django的作者将sql语句封装在里面供我们使用。 我们前面还提到过Django提供一个模拟数据库的工具,sqlite,供我们学习测试使用。 如果我们想使用mysql...

隐匿的蚂蚁
今天
3
0
Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
3
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部