1-----数据访问

                  2-----数据查询

                  3-----数据添加

                  4-----数据修改

                  5-----数据删除

创建一张nation表并写入三条测试数据

create table nation(
`code` int(15) not null auto_increment,
`name` varchar(50) not null,
primary key (`code`)
);
insert into `nation` values
(1,'人族'),
(2,'神族'),
(3,'魔族'),
(4,'人族');

一 数据访问(MVC中的M)

   --模型应当建在Model文件下

   --例如对nation表进行操作

      --在Model文件夹下创建NationModel.class.php  创建那个表则用哪个表命名模型,创建类NationModel与文件名一致继承自Model

      --修改数据库链接配置,从tp/ThinkPHP/Conf/convention.php把数据库设置复制至tp/Application/Home/Conf/config.php

            修改书库设置,在各自的模块中修改  'DB_FIELDS_CACHE' => false // 启用字段缓存在开发时改为false

   ①--第一种:new方式

<?php
namespace Home\Controller;
use Think\Controller;
class TestController extends Controller {
public function test(){
$conn = new \Home\Model\NationModel();
var_dump($conn);//输出并查看
}
//子类对象NationModel
}

   ②--第二种:D()方法

<?php
namespace Home\Controller;
use Think\Controller;
public function test(){
$conn = D("nation");//直接在方法内写表名
var_dump($conn);
}
//子类对象NationModel
}

   ③--第三种方式:M()方法

<?php
namespace Home\Controller;
use Think\Controller;
public function test(){
$conn = M("nation");//直接在方法内写表名
var_dump($conn);
}
//父类对象Model
}

   三种方法的区别

      --第一种new方法必须写Model文件

      --第二种方法,如果Model存在则创建子类对象,如果不存在则创建父类对象

      --第三种方法创建父类对象

      --推荐使用第二三种方式

          博客出自"万年",地址:博客出自"万年",地址:http://www.cnblogs.com/wannian/p/8999946.html

二 数据的查询( 写在test()方法内 )

   --TP框架自带的方法( 以访问nation表为例.$conn为表的对象 );

      |--返回数据的

      --$conn->select();  查询,并返回一个二维数组,

                --如果没有值,则查询所有,如果写入主键的值则返回相应的查询结果,多个值时用逗号隔开

      --$conn->find( '主键值' )  查询一条数组,返回一个数组

      --$conn->count();  查询并返回数据条数,

      --$conn->max( '字段名' ); 查询并返回字段中最大的数据值 

      --$conn->min( '字段名' ); 查询并返回字段中最小的数据值

      --$conn->avg( '字段名' );  返回该字段数据的平均值,小数点后四位数

      --$conn->sum( '字段名' );  返回该字段数据的和

 |--其他:连贯操作

--field(" "); 要被查询的列,值为字段名,或count()方法等  例如: $conn->field(' code ')->select(); 查询code列的数据

--where(" "),根据条件查询,语法与sql语句一样,  例如: $conn->where(" code='1' or code='2' ")->select();根据条件查询

--table(" ");临时切换表,只在此行切换  例如: $conn->table(' user ')->select(); 切换到`user`表并查询

--alias(" "); 为表设置别名  例如: $conn->alias(" t1 ")->select();

--order(" "); 排序   例如: $conn->order('code desc')->select();  根据code列降序排序

--limit(" ");限制查询条数  例如: $conn->limit("1,2")->select(); 跳过1条数据,取2条数据;

--page(" 页,条 ");分页查询  例如: $conn->page("2,2")->select(); 取第2页的数据,每页显示2条

--group(" "); 分组查询  例如:$conn->group("name")->field("name,count(*)")->select(); 根据name字段分组查询name以及统计数量

--having(" ");配合分组查询筛选条件  例如: $conn->group("name")->having("count(name)>1")->select();  根据name分组,并查询条数大于1条的数据

--distinct(" "); 去重  例如: $conn->field("name")->distinct("name")->select();   查询name列,并对其去重

--lock(true); 添加锁  例如:$conn->lock(true)->select();  在执行这条语句的时候,其他人无法操作,(在访问数据非常集中大量时时可避免错误操作)

--join();连表查询  进行连表查询时建议使用sql语句,个人认为比该方法好;

 |--sql语句查询

      $conn->query(" ");  在query方法中写sql语句,连表查询时建议使用

三 数据的添加

       ①利用数组与add()方法

            

public function other(){
$conn = D('nation);   $arr = array('code'=>'5', 'name'=>'精灵族'); //定义一个关联数组,索引对应字段名,值对应数据的值
  $conn->add($arr);  //add();方法添加值; }

    

       ②利用$conn对象与add()方法(因为$conn是一个对象,且有code与name两个属性,为其赋值)

public function other(){
$conn = D('nation);   $conn->code='6';
  $conn->name='兽人族';
  $conn->add(); }

      

      ③自动收集表单

        --前台代码

            --提交到自身方法的路径

            --name的值是数据库表的字段名

<form action="__SELF__" method="post">
<div><input type="text" name="code"></div>
<div><input type="text" name="name"></div>
<div><input type="submit" value="登录"></div>
</form>

        --模型的代码

            --判断是否提交

            --create()方法自动收集表单数据

            --add()添加

public function other(){
$conn = D("nation");
if(empty($_POST)){
$this->show();
}else{
//执行添加操作
$conn->create();//自动收集表单
$conn->add();
}
}

四 数据的修改

    ①利用数组与save()方法

public function other(){
$conn = D('nation);
  $arr = array('code'=>'7', 'name'=>'妖精族');
  $conn->save($arr);  //save()修改;
}

    ②利用$conn对象与add()方法

public function other(){
$conn = D('nation);   $conn->code='6';
  $conn->name='天翼族';
  $conn->save(); }

③ 自动收集表单

        --前台代码

            --提交到自身方法的路径

            --name的值是数据库表的字段名

<form action="__SELF__" method="post">
<div><input type="text" name="code"></div>
<div><input type="text" name="name"></div>
<div><input type="submit" value="登录"></div>
</form>

        --模型的代码

public function other(){
$conn = D("nation");
if(empty($_POST)){
$this->show();
}else{
//执行添加操作
$conn->create();//自动收集表单
$conn->save();
}
}

 五 数据删除

    |--delete()方法   值为主键对应的值;

    |--execute()方法,  值为sql语句,进行增删改

TinkPHP框架学习-03模型类的更多相关文章

  1. Django(三) 模型:ORM框架、定义模型类并创建一个对应的数据库、配置Mysql数据库

    一.模型概述 https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial02/ https://www.runoob.com/django/dj ...

  2. TinkPHP框架学习-01基本知识

    1-----目录结构 2-----访问地址 3-----MVC开发 一 目录结构 |--Application 程序文件夹 |--Common 公共方法函数 |--Home      模块 |也可以自 ...

  3. TinkPHP框架学习-04命名空间

    1-----命名空间 2-----调用其他控制器的方法 3-----U()函数 一命名空间 ①看做是虚拟目录 --ThinkPHP/Library 初始命名空间 --在Library文件夹下的所有文件 ...

  4. TinkPHP框架学习-02控制器基本操作

        1-----创建控制器     2-----访问视图页面 3-----注册变量到视图页面 4-----获取表单数据 一 在Home模块下创建控制器 举例: 目录tp/Application/H ...

  5. Spring框架学习03——Spring Bean 的详解

    1.Bean 的配置 Spring可以看做一个大型工厂,用于生产和管理Spring容器中的Bean,Spring框架支持XML和Properties两种格式的配置文件,在实际开发中常用XML格式的配置 ...

  6. Yii 框架学习--03 多应用多模块

    本文以YII 2.0.7为例. 概述 首先看看多应用和多模块的特点: 多应用的特点: 独立配置文件 独立域名 多模块的特点: 统一配置文件 统一域名 那么,实际该怎么决定使用多应用还是多模块呢? 对于 ...

  7. laraver框架学习------工厂模型填充测试数据

    在laravel中填充数据有几种方式.一种是Seeder,另一种是工厂模式进行的填充. 工厂模式可以实现大批量的填充数据,数据的量可以自定义.这也为后续的软件测试提供方便. 在laravel框架有da ...

  8. 深度学习Keras框架笔记之AutoEncoder类

    深度学习Keras框架笔记之AutoEncoder类使用笔记 keras.layers.core.AutoEncoder(encoder, decoder,output_reconstruction= ...

  9. 深度学习Keras框架笔记之TimeDistributedDense类

    深度学习Keras框架笔记之TimeDistributedDense类使用方法笔记 例: keras.layers.core.TimeDistributedDense(output_dim,init= ...

随机推荐

  1. 【SQL】 借助游标来实现文本的分列与合并

    有时我们会遇到需要把表中个别字段拆分成多条数据或是把多条数据合并到一起的情况.一般的编程语言都有函数“split”和“join”来实现,而SQL中既没有这些函数也没有类似数组和列表这类方便保存成组数据 ...

  2. URL编码表 Base64编码表 HTTP消息含义

    URL编码表 backspace 8% A 41% a 61% § %A7 Õ %D5   tab 9% B 42% b 62% « %AB Ö %D6   linefeed %0A C 43% c ...

  3. 使用C#的aforge类库识别验证码实例

    一: 验证码处理 1.  一般处理原则 这种验证码为什么说跟没有一样,第一点:字体规范工整,第二点:不旋转扭曲粘连,第三点:字体颜色单一,下面看处理步骤. 这里要注意的是,aforge只接受像素格式为 ...

  4. 使用korofileheader插件vs code添加文件头注释和函数注释

    korofileheadervs code添加文件头注释和函数注释1.extensions搜索fileheader,安装koroFileHeader2.设置:edit=>perference=& ...

  5. 配置Tomcat使用https协议(配置SSL协议)

    配置Tomcat使用https协议(配置SSL协议) 2014-01-20 16:38 58915人阅读 评论(3) 收藏 举报 转载地址:http://ln-ydc.iteye.com/blog/1 ...

  6. JAVA 注解和反射

    通过反射来获取类 Class MyTest{ private String name; public String showName{ System.out.println(this.name); } ...

  7. ARM 汇编学习笔记

  8. AutoCAD神器! AutoCAD自动切换中英文输入法插件(ZDSRF)

    AutoCAD神器! AutoCAD自动切换中英文输入法插件 (一)功能特点: CAD命令中只能输入英文字符,不能输入中文,在文字编辑.文字输入.尺寸编辑中经常需要输入中文,此时就需要频繁的切换输入法 ...

  9. sed命令的基本使用方法

    sed命令 stream editor,用程序的方式编辑文本.基本上是玩正则模式匹配. 用s命令替换 $ sed "s/my/Hao Chen's/g" pets.txt 单引号去 ...

  10. 51nod1227 平均最小公倍数

    $Ans(l,r)=ans(r)-ans(l-1)\\ans(n)=\sum\limits_{i=1}^n \sum\limits_{j=1}^i \frac{j}{gcd(i,j)}\\=\sum\ ...