热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ThinkPHP模型(查询)

将convention.php中关于数据库的配置复制到模块中的Confconfig.php文件中TP框架中的模型用来操作数据库,写在model文件夹下,

将convention.php中关于数据库的配置复制到 模块中的Conf/config.php文件中

TP框架中的模型用来操作数据库,写在model文件夹下, 数据库中的每张表对应到TP框架中就是一个类 表中的字段(列)对应为类的成员变量

如 使用Info表 就是一个Infomodel.class.php

如果不对表进行特殊操作 就可以不用去做Info的模型文件

1.原始方式

先做model模型

infoModel.class.php   表名+Model.class.php

namespace Home\Model;

use Think\Model;
class infoModel extends Model
{
}

    调用方法输出

function DB()
{
$m=new \Home\Model\infoModel();
var_dump($m);
}

2.使用快捷方法D() 相当于new
$m=D("info");

3.使用快捷方法M() 造父类model对象
$m=M("nation");
var_dump($m);

【操作数据库】
$attr=$m->select();//查询所有数据
$attr=$m->select("p001,p002"); //()内是一个参数,隔开 返回二维数组
$attr=$m->find("p001");//找特定一条数据,只能根据主键值找,返回一维数组

var_dump($attr);

【连贯操作】:类中的一个操作方法  执行完操作后 return一个$this  它还是一个对象  它还可以继续调用方法  直到某个不返回对象的方法

【数据查询方法支持的连贯操作方法有】:

where 可以加查询条件
$attr=$m->where("code='p001' or sex=true")->select();

table 可以切换要操作的表
$attr=$m->table("nation")->select();

alias 可以设置表的别名
$attr=$m->alias("haha")->select();
var_dump($m);

field 可以指定查询的列(字段)
$attr=$m->field("code,name")->select();

order 可以加排序条件默认升序 desc降序
$attr=$m->order("nation desc")->select();

group可以分组
$attr=$m->field("nation")->group("nation")->select();

having可以加分组后的条件
$attr=$m->field("nation")->group("nation")->having("count(*)>2")->select();
select nation from info group by nation having count(*)>2

join可以连接多个表,注意在field里要给字段加别名
$attr=$m->field("info.code,info.name as xingming,sex,nation.name")->join("nation on info.nation=nation.code")->select();//注意给查询的字段加别名

联合查询,一起显示
$attr=$m->field("name")->union("select name from nation")->select();

distinct去重 先查一列 再去重 需加参数true
$attr=$m->field("nation")->distinct(true)->select();

limit可以分页 参数 第一个代表跳过多少条 第二个代表取多少条(每页显示多少条)
$attr=$m->limit(3,3)->select();


page分页 第一个参数代表当前第几页,第二个参数代表每页多少条
$attr=$m->page(2,3)->select();

取数据总条数count 需写在最后
$attr=$m->count("*");
取某一列的和
$attr=$m->table("car")->sum("Price");
取平均值
$attr=$m->table("car")->avg("Price");
取最大值
$attr=$m->table("car")->max("Price");
取最小值
$attr=$m->table("car")->min("Price");

TP框架也支持原生sql语句 查询用query
$sql="select * from info where Nation='n001'";
$attr=$m->query($sql);

增删改用execute方法
$sql="insert into nation values('n009','神族')";
$attr=$m->execute($sql);
var_dump($attr);

【除了select find count聚合函数外 都是支持连贯操作的方法】

 

实例:在控制器的方法中查询好信息 然后在模板页面显示

$attr=$m->field("info.Code,info.Name,sex,nation.Name as nationname,birthday")->join("nation on info.Nation=nation.Code")->select();
$this->assign("info",$attr);
$this->display();

   注意:这里的是标签                                     



<{$v.code}>        要小写
<{$v.name}>
<{$v["sex"]?"男":"女"}>    处理性别  TP框架支持三元运算符  使用三元运算符时&#xff0c;不支持 . 语法
<{$v.nationname}>   处理民族  在查询的时候使用join
<{$v.birthday}>

 

 判断是不能出现>或< 要有gt lt 代替
yes

no

 

转:https://www.cnblogs.com/hamilton/p/5723109.html



推荐阅读
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
author-avatar
奶油泡芙2覀21
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有