ThinkPHP实例化模型的四种方法概述


Posted in PHP onAugust 22, 2014

本文讲述了ThinkPHP实例化模型的四种方法,对于ThinkPHP程序设计来说有非常重要的应用。具体如下:

1、创建一个基础模型:实例化一个系统自带的数据库操作类

   Test.Model.class.php页面代码如下:

class TestModel extends Model{
   
  }

   UserAction.class.php页面代码如下:

function test(){
    $test=M('test');//表示实例化的是自带的Model类,并且传入test值表示操作的是test表
    //等同于$test=new TestModel();
    $test=$test->select();
    print_r($test);//输出test表中所有数据
  } 
 

2、实例化一个自定义模型

   如果数据库操作比较复杂,就需要在自定义的Model类中添加一些自定义的数据库操作方法

   UserModel.class.php页面代码如下:

class UserModel extends Model{
    function pyj(){
      echo 'pengyanjie';
      //其它的一些数据库操作方法
    }
  }

   UserAction.class.php页面代码如下:

function user(){
    $user=D('User');//实例化自定义的数据库操作类
    //等同于$user=new UserModel();
    $user->pyj();//调用User模型中的pyj方法
  }

   或者,你需要实例化一个表,同时呢,实例化一个自己写的自定义的数据库操作类,代码如下:

function love(){
    $love=M('test','UserModel');  
    //$love=new UserModel('test'); 
    $list=$love->select();
    dump($list);
    $love->pyj();
  }

3、实例化一个用户模型

   UserAction.class.php页面代码如下:

function user(){
    $user=new UserModel();//等同于$user=D('User');
    $list=$user->select();
    dump($list);
    echo $user->aa();
  }

   UserModel.class.php页面代码如下:

   该类名user与表名user相对应,所以在UserAction中实例化这个模型的时候就不需要再额外的传表名了,代码如下:

class UserModel extends Model{
    function aa(){
      echo 'pengyanjie';
    }
  }

  这个第三种实例化模型方法与第二种的区别在于:在你的业务逻辑当中,通常情况下会有一些公共的业务逻辑,那你用第二种M('表名','模型名');如M('user','CommonModel')会更方便;

  第三种实例化模型方法适于于针对所操作表的更加复杂的业务逻辑,但是它不需要使用到公共业务逻辑。(它的业务逻辑,针对用户表,它是唯一的,并且不需要在其它模型当中使用)。

4、实例化一个空模型,它并不知道你要实例化操作时用到的是哪张表。

$user=new Model();//等价与$user=M();
  $list=$user->query('select * from think_user'); //使用传统的sql语句的方式,如果这样的话,就必须要加表前缀 
  dump($list);

附:$user=new UserModel();与$user=D('user');的区别:

(1)、D方法可以自动检测模型类,不存在时,它会抛出一个异常。同时对于已实例化过的模型,不会去重复实例化。默认的D方法,只能应用于当前项目下面的模型。

(2)、如果说,我这是前台应用,但是我想实例化后台项目的模型可以用D搞定。

$user=D('admin','user');//会去自动找admin分组下的user模型类

或者:

$user=D('admin.user');

 希望本文所述实例对大家ThinkPHP程序设计有所帮助。

PHP 相关文章推荐
综合图片计数器
Oct 09 PHP
其他功能
Oct 09 PHP
随时给自己贴的图片加文字的php代码
Mar 08 PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
PHP使用正则表达式获取微博中的话题和对象名
Jul 18 PHP
Symfony2框架创建项目与模板设置实例详解
Mar 17 PHP
php5.3后静态绑定用法详解
Nov 11 PHP
php版微信小店API二次开发及使用示例
Nov 12 PHP
PHP搭建大文件切割分块上传功能示例
Jan 04 PHP
PHP基于socket实现客户端和服务端通讯功能
Jul 13 PHP
PHP文件上传小程序 适合初学者学习!
May 23 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 #PHP
ThinkPHP基本的增删查改操作实例教程
Aug 22 #PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 #PHP
ThinkPHP验证码和分页实例教程
Aug 22 #PHP
ThinkPHP文件上传实例教程
Aug 22 #PHP
ThinkPHP中ajax使用实例教程
Aug 22 #PHP
ThinkPHP中的常用查询语言汇总
Aug 22 #PHP
You might like
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
php权重计算方法代码分享
2014/01/09 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
理清PHP在Linxu下执行时的文件权限方法
2017/06/07 PHP
thinkphp5框架实现的自定义扩展类操作示例
2019/05/16 PHP
jquery JSON的解析方式
2009/07/25 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
jQuery创建自己的插件(自定义插件)的方法
2010/06/10 Javascript
JavaScript 学习笔记之操作符
2015/01/14 Javascript
JS和css实现检测移动设备方向的变化并判断横竖屏幕
2015/05/25 Javascript
javascript每日必学之封装
2016/02/23 Javascript
JS常见算法详解
2017/02/28 Javascript
使用react render props实现倒计时的示例代码
2018/12/06 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
2019/01/18 Javascript
使用express获取微信小程序二维码小记
2019/05/21 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
2020/04/16 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
Python中实现参数类型检查的简单方法
2015/04/21 Python
Python基于回溯法子集树模板解决全排列问题示例
2017/09/07 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
Python操作MySQL数据库的方法
2018/06/20 Python
Python读写zip压缩文件的方法
2018/08/29 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
Python threading.local代码实例及原理解析
2020/03/16 Python
Django中使用Json返回数据的实现方法
2020/06/03 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
OpenCV利用python来实现图像的直方图均衡化
2020/10/21 Python
CSS3中的@keyframes关键帧动画的选择器绑定
2016/06/13 HTML / CSS
草莓网化妆品澳大利亚站:Strawberrynet AU
2017/12/18 全球购物
世界上最好的野生海鲜和有机食品:Vital Choice
2020/01/16 全球购物
写出程序把一个链表中的接点顺序倒排
2014/04/28 面试题
单位领导婚礼致辞
2015/07/28 职场文书
MySQL root密码的重置方法
2021/04/21 MySQL
MySQL创建定时任务
2022/01/22 MySQL