TinkPHP框架学习-02模型类
Posted 半封
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TinkPHP框架学习-02模型类相关的知识,希望对你有一定的参考价值。
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框架学习-02模型类的主要内容,如果未能解决你的问题,请参考以下文章