tp框架-----Model模型层
1、Model模型层是用来做什么的呢?
主要是用来做操作数据库访问的。也就说明TP框架自带了一种访问数据库的方式,使用的是Model模型。
2、Model模型怎样使用呢?
要使用Model模型层访问数据库的话,需要做配置,因为必须把数据库的一些参数配置好之后,才能连接,所以找到Config.php。
如何修改配置呢?
1)打开下图路径中的Convention.php文件
2)复制convention.php中的下图内容到Home/Conf/config.php中
3)修改配置,将自己的数据库名、密码等 写上
注意:
'DB_FIELDS_CACHE' => false, 默认是true,建议关闭,所以选择false
<?php
return array(
//'配置项'=>'配置值'
'SHOW_PAGE_TRACE'=>true,/* 数据库设置 */'DB_TYPE' => 'mysql', // 数据库类型'DB_HOST' => 'localhost', // 服务器地址'DB_NAME' => 'book', // 数据库名'DB_USER' => 'root', // 用户名'DB_PWD' => '', // 密码'DB_PORT' => '', // 端口 默认3306'DB_PREFIX' => '', // 数据库表前缀'DB_PARAMS' => array(), // 数据库连接参数 'DB_DEBUG' => TRUE, // 数据库调试模式 开启后可以记录SQL日志'DB_FIELDS_CACHE' => false, // 启用字段缓存;默认开启,建议关闭'DB_CHARSET' => 'utf8', // 数据库编码默认采用utf8
);
如何连接数据库呢?(创建模型对象呢?)
(1) 制作model模型
a) model本身就是一个类文件
b) 数据库中的每个数据表都对应一个model模型文件
c) 最简单的数据model模型类
(2)实例化Model的三种方式:
第一种方式:
<?php
namespace Ceshi\Controller;
use Think\Controller;
class MainController extends Controller
{ public function index(){$n = D("book");var_dump($n);}
}
第二种方式:
<?php
namespace Ceshi\Controller;
use Think\Controller;
class MainController extends Controller
{ public function index(){// $n = D("book");$n = M("book");var_dump($n);}
}
两种方式结果如下图:
用D()和M()到底有什么区别呢?
首先,在Ceshi/Model/BookModel.class.php:(对应的Model类文件)
<?php
namespace Home\model;
use Think\Model;
class BookModel extends Model
{}
现在再运行D()和M():
D():
M():
这时就会发现用红色圆圈 标记的地方有所不同,M()造的是父类对象,D()造的是普通的对象,他们的区别只有在有对应的Model类文件下才会有。
D()和M()方法都可以实例化操作一个没有具体model模型类文件的数据表。
第三种方式:(有对应的Model类文件)
$db = new \Home\Third\DB();------------ $db = new + 命名空间 + DB();
tp框架如何获取数据?
//获取数据$arr = $n->select(); //读取所有数据;二维数组$arr = $n->select("20,1");//可以给参数,必须是主键值,可以给多个$arr = $n->find("20");// 读一条数据,是一维数组$arr = $n->count(); //返回该表的数据总数//聚合函数$arr = $n->max("bkprice"); $arr = $n->sum("bkprice"); $arr = $n->min("bkprice"); $arr = $n->avg("bkprice");
tp框架的连贯操作
//连贯操作
//where返回的是对象,需要再掉一次,where相当于加查询条件,可以and or加多个条件
$arr = $n->where("bkprice>30")->select();
//动态切换,切换数据表$arr = $n->table("users")->select();
//field用来确定查找的列数
$arr = $n->field("bkname,bkprice")->select();
//用于排序
$arr = $n->order("bkprice desc")->select();
//limit做分页第一个参数表示跳过多少条
$arr = $n->limit(3,3)->select();
//page第一个参数代表页数
$arr = $n->page(4,1)->select();
//连接查询未完
$arr = $n->field("orders.oid,orders.bkid as obkid")->join("book on orders.bkid=book.bkid")->select();
//tp可以调用原声的sql语句
$arr = $n->query("select * from book");
$arr = $n->execute("insert into book values('','12','12','','','','','','')");
总结---数据查询
select()是数据模型的一个指定方法,可以获得数据表的数据信息
返回一个二维数组信息,当前数据表的全部数据信息
$obj = D(); 创建对象
$obj -> select(); 查询数据
select 字段,字段 from 表名 where 条件 group 字段 having 条件 order 排序 limit 限制条数;
SELECT%DISTINCT%%FIELD%FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%%LIMIT% %UNION%%COMMENT%
$obj -> field(字段,字段); 查询指定字段
$obj -> table(数据表); 设置具体操作数据表
$obj -> where(参数); 参数就是正常sql语句where后边的条件信息
例如:( “goods_price >100 and goods_name like ‘三%’”)
$obj -> group(字段); 根据字段进行分组查询
$obj -> having(参数条件); having 条件设置
$obj -> order(‘price desc/asc’) 排序查询
$obj -> limit([偏移量,]条数) 限制查询的条数
sql语句里边具体的条件设置在tp框架model模型里边体现为具体的方法操作
以上方法理论上是父类Model的对应方法
父类model具体存在方法: field() where() limit()
还有一些方法在__call()自动调用函数里边: table() group() order() having()
在__call()魔术方法里边会判断当前的执行方法是否是一个method属性的元素信息,如果存在就会执行执行
以上多个方法是同时使用多个进行条件显示(并且没有顺序要求)
$obj -> limit(5)->field(‘id,name’)->order(‘price asc’) -> table(‘sw_goods’)->select();
以上许多方法执行没有顺序要求,许多方法执行后都是把具体的参数赋予到model属性options里边,最后根据options拼装sql语句。
$info = $goods -> where()->field(字段)->select();
select()方法
1. 返回一个二维数组信息
2. 返回全部数据表信息
3. 给该方法传递参数
a) select(30) 查询主键值等于30的记录信息
b) select(“10,12,14”) 查询主键值在10、12、14范围的记录信息
- find()如果我们查询的结果只有一个信息,使用select()会返回一个二维数组
为了使用方便我们会希望返回一个一维数组,这时候可使用find()方法
- having()方法设置查询条件,where()设置查询条件
6. 相关聚合函数 count() sum() avg() max() min()
以上聚合函数是最后被调用的方法
以上方法可以结合具体条件方法使用
例如:$goods -> where(‘goods_price >1000’)->count(); 大于1000元的商品的总数目
转载于:https://www.cnblogs.com/chenguanai/p/7140465.html
tp框架-----Model模型层相关推荐
- php tp框架调用m层,TP学习笔记一(tp的目录结构 , tp的输出方式)
一.ThinkPHP的介绍 //了解 MVC M - Model 模型 工作:负责数据的操作 V - View 视图(模板) 工作:负责前台页面显示 C - Controller 控制器(模块) 工作 ...
- Django框架的模型层之多表操作
目录 一 创建模型 二 表记录的增删改 一对多 多对多 三.基于对象的跨表查询 一对一查询(Author 与 AuthorDetail) 一对多查询(publish与book) 多对多查询 (Auth ...
- Django框架——模型层单表操作、模型层多表操作、模型层常用和非常用字段和参数、模型层进阶
文章目录 1 模型层-单表操作 一 ORM简介 二 单表操作 2.1 创建表 1 创建模型 2 更多字段 3 更多参数 4 settings配置 5 增加,删除字段 2.2 添加表纪录 2.3 查询表 ...
- tp框架之Model类与命名空间
1.获取系统常量信息 public function shuchu(){var_dump(get_defined_constants()); }2.跨控制器或跨模块调用 function diaoyo ...
- 【深度学习】深入浅出神经网络框架的模型元件(池化、正则化和反卷积层)
[深度学习]深入浅出神经网络框架的模型元件(池化.正则化和反卷积层) 文章目录 1 池化层 1.1 MaxPooling2D 1.2 MaxPooling1D: 1.3 AveragePooling2 ...
- 【深度学习】深入浅出神经网络框架的模型元件(常用层和卷积层)
[深度学习]深入浅出神经网络框架的模型元件(常用层和卷积层) 文章目录 1 常用层1.1 Dense1.2 Activation层1.3 Dropout1.4 Flatten 2 卷积层2.1 Cov ...
- MVC中Model BLL层Model模型互转
MVC中Model BLL层Model模型互转 一. 模型通常可以做2种:充血模型和失血模型,一般做法是模型就是模型,不具备方法来操作,只具有属性,这种叫做失血模型(可能不准确):具备对模型一定的简单 ...
- django框架——模型层(下)
系列文章目录 第一章 django安装与介绍 第二章 django基础使用 第三章 路由层 第四章 虚拟环境.django版本区别.视图层 第五章 模板层 第六章 模型层(上) 第七章 模型层(下) ...
- thinkphp模型层Model、Logic、Service讲解
thinkphp模型层Model.Logic.Service讲解 时间:2014-08-24 15:54:56 编辑:一切随缘 文章来源:php教程网 已阅读:771 次 js特效源码,就从这 ...
- thinkphp通过模型查询mysql_6月16 ThinkPHP连接数据库及Model数据模型层--------查询及数据添加...
连接数据库配置及Model数据模型层 convertion.php config.php 1.在config.php做数据库连接配置 2.修改配置 /*数据库设置*/ 'DB_TYPE' => ...
最新文章
- sdut 2135 数据结构实验之队列一:排队买饭
- 罗永浩与银联合作直播,但因过程太流畅被网友调侃是录播
- 力扣26--删除有序数组中的重复项
- linux编译安装mysql的意思,linux编译模式安装mysql 步骤说明
- wxpython控件字体_wxPython获取系统字体代码
- mysql类目树关系的保存和全排列查询
- 非线性光纤光学——光孤子
- jsp综合开发实例——夏日九宫格日记网
- 栈“后进先出”和队列中“先进先出”的含义
- android SwipeMenuLayout实现控件侧滑删除
- sun.misc.BASE64Encoder是内部专用 API, 可能会在未来发行版中删除
- java读取局域网共享文件夹中文件并保存到本地文件夹
- nokia手机的含义
- SpringBoot集成微信支付V3
- Mac 如何在终端玩游戏
- LeetCode 576 出界的路经数
- 笔记本 windows10使用耳机看视频 刚开始会有几秒的无声
- 追踪放“马”贼——从木马中分析放马者手记
- Linux下查看icc安装目录,linux icc 安装
- 类型列表Python 学习手册 第二部分 类型与运算 第4章 介绍Python对象类型
热门文章
- lsblk命令 – 查看系统的磁盘
- MongoDB 数据集合导出 与 导入
- 小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介
- 阶段3 1.Mybatis_02.Mybatis入门案例_2.mybatis入门案例中的设计模式分析
- 电子书下载:MySQL Stored Procedure Programming
- IDEA(2018)导入项目报错解决方案
- Django 学习笔记(五) --- Ajax 传输数据
- Linux下Nginx安装
- 关于吐槽网播放映兔源视频无法播放的问题 及解决方案
- Hibernate(六):映射一对多关联关系、双向一对多映射