thinkphp通过模型查询mysql_thinkphp框架之模型(数据库查询)

1. 模型定义

文件名称必须是 表名+Model.class.php 例如:UserModel.class.php

namespace Home\Model; //该模型类的命名空间

use Think\Model; //下面的模型类需要继承Model基类,Model是系统定义的模型类,在 Think\Model 这个命名空间中

class UserModel extends Model

{

}

文件中的类名是跟文件名中的“表名”是一致的(这一项是必须的如果不一致在控制器中就会找不到这个模型类)。

类名与表名的对应关系是(注意:模型名中对应每个大写对应的数据表的前面都有一个下划线,如下第二行)

模型名

约定对应数据表(如果数据库的前缀是think_)

UserModel

think_user

UserTypeModel

think_user_type

2. 模型实例化

2.1 直接实例化

2.1.1  不带参数实例化    $user=new \Home\Model\UserModel();

2.1.2     带参数实例化    $user=new  \Home\Model\UserModel(['模型名'],['数据表前缀'],['数据库连接信息']);

上述两种方法的区别在于,第一种在实例化的时候回去读取默认配置(例如在模型中的配置或者是模块中的数据库配置),而第二种方法是直接读取传入参数的数据库配置

模型名是对应的数据库中的去掉前缀的表名,如果不指定这会读取模型类的名称但是是去掉Model后的名称 例如:

UsereModel.class.php 文件中的 UsereModel 类 ,如果在实例化的时候传入模型名"User"会按传入查找数据表 前缀+“user”,如果不传则会提取 UsereModel类的 “Usere” 去查找数据表。这样可以解决模型名与数据表明不一致的问题。

2.2  D方法实例化

D方法的参数是模型的名称,并且和模型类的大写定义是一致的。

//实例化模型

$user=D("User");

//相当于 $user=new \Home\Model\UserModel();

跨模块实例化

D('Admin/User') 其中 “Admin” 是模块名称,“User”是模型名称

实例化 Extend扩展名空间下的Info模型

D('Extend://Editor/Info')

2.3 M方法实例化

M('User') 与D方法实例化的区别是这个方法不需要该模型存在,并且如果模型存在则其中的方法也会别忽略,该方法主要是用来对数据库的操作。

当D方法没有找到模型时会默认的调用 M方法。

2.4  实例化空模型

$Model=new Model() 或者 $Model=M();

这种空实例可以用老进行原生的sql查询(注:其他的模型也可以进行原生的sql查询,并且查询的表不必跟模型对应)

3. 模型中的字段

$fields=array('','') 表示数据表中的字段

$pk 表示数据表的主键

$connection=array('db_type' => 'mysql','db_user' => 'root','db_pwd' => '1234','db_host' => 'localhost','db_port' => '3306','db_name' => 'thinkphp','db_charset' => 'utf8','db_params' => array(), // 非必须);  表示数据库连接

数据库类型://用户名:密码@数据库地址:数据库端口/数据库名#字符集

$connection = 'mysql://root:1234@localhost:3306/thinkphp#utf8';

thinkphp框架 的 链接数据库和操作数据

框架有时会用到数据库的内容,在"ThinkPhp框架知识"的那篇随笔中提到过,现在这篇随笔详细的描述下. 一.链接数据库 (1)找到模块文件夹中的Conf文件夹,然后进行编写con ...

ThinkPHP框架之模型

一.数据库配置 在父类配置ThinkPHP/Conf/convention.php中,找到数据库设置部分: 将这部分复制到我们模块的配置文件Home/Conf/config.php中,将需要的参数写上 ...

CodeIgniter (CI)框架中的数据库查询汇总

引言: 前两天业务涉及到一个拉取答题排行榜的需求,数据库里数据是这样的: 同一个人可能提交过多次成绩,所以同一个人可能会有多次记录: 同一个人提交的多次成绩中可能有至少两次成绩是一样的. 于是,查询的 ...

涨知识,涨知识 :ThinkPHP框架下Where条件查询Mysql数据库某字段是否为空

代码虐我千百遍,我对代码如初恋~ 问题: 查询某字段app_date数据是否为NULL,正常我们实现的办法是: $map['app_data'] = array('eq','null'); $data ...

关于thinkphp框架中模型笔记

模型这一块,感觉学习的不是很清楚,单独水一贴thinkphp中模型的学习笔记. 0x01 模型类简介 数据库中每一张表对应一个模型,类名就是表名,类里面的成员变量就是列名, 把一张表对应为一个类,其中 ...

ThinkPHP框架 基础 链接数据库

在第一次成功访问应用入口文件的时候,会显示出一个系统默认的欢迎页面并自动在APPLication文件夹里生成三个文件夹,如下,第一次访问应用文件路径:localhost/tr/index.php   ...

tp框架简易导出数据库

类库,将以下文件放入vendor文件夹中,命名空间vendor,使用think下的model类 <?php /** * 描述:基于ThinkPHP框架的Mysql数据库导出类 * 日期:2012 ...

ThinkPhp框架的数据库操作(查询)

TP框架有一套自己的数据库操作的代码,包括数据库的增.删.改.查.本文主要讲解TP框架的数据库查询操作. 找到入口文件的控制器: 我这里的入口文件是Show文件夹下的控制器. 打开Login控制器. ...

ThinkPhp框架对&OpenCurlyDoubleQuote;数据库”的基本操作

框架有时会用到数据库的内容,在"ThinkPhp框架知识"的那篇随笔中提到过,现在这篇随笔详细的描述下. 数据库的操作,无疑就是连接数据库,然后对数据库中的表进行各种查询,然后就是 ...

随机推荐

p&sol;invoke 碎片-- 对字符串的处理

字符串在内存中的的几种风格 字符串作为参数和返回值 参考 字符串在内存中的几种风格 所谓的风格,也就是字符串在内存中的存在形式.如何存放的,占据内存的大小,还有存放顺序等.在不同的编程语言和不同的平台 ...

&lbrack;Python&rsqb; Python中的一些特殊函数

1. 过滤函数filter 定义:filter 函数的功能相当于过滤器.调用一个布尔函数bool_func来迭代遍历每个列表中的元素:返回一个使bool_func返回值为true的元素的序列. a=[ ...

C&num; 利用反射给不同类型对象同名属性赋值

public class ObjectReflection { public static PropertyInfo[] GetPropertyInfos(Type type) { return ty ...

jQuery使用之(一)标记元素属性

jQuery使用主要介绍jQuery如何控制页面,包含元素的属性.css样式风格.DOM模型.表单元素和事件处理等. 标记元素的属性 html中每一个标记都具有一些属性,他们这个标记在页面中呈现各种状 ...

jQuery动态加载脚本 &dollar;&period;getScript&lpar;&rpar;&semi;

jQuery.getScript("/path/to/myscript.js", function(data, status, jqxhr) {       /*          ...

tc srm 636 div2 500

100的数据直接暴力就行,想多了... ac的代码: #include #include #include

PL&sol;SQL编程要点和注意点

http://www.itpub.net/thread-1560427-3-1.html 1. 非关键字小写,关键字大写,用下划线分隔,用前缀区分变量与表列名.不强求变量初始值.2. 永远只捕获可预测 ...

使用指定格式的字符串变量格式化日期字符串,DateAndTime取时间间隔

private void btn_GetTime_Click(object sender, EventArgs e) { lab_time.Text = DateTime.Now.ToString(& ...

WebGIS开源解决方案之开发环境搭建&lpar;四&rpar;

续前几篇文章,前面陆续介绍了开源GIS服务器Geoserver,开源数据库Postpresql以及开源前端udig的安装和基本使用. WebGIS前端开发,可以选择arcgis for javascr ...


版权声明:本文为weixin_35340181原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。