thithinkphp Model笔记

1.在项目配置文件下配置数据库信息

2.创建Model模型类

原则上每个数据表都对应一个Model模型类

3.实例化对象

实例化对象要表现命名空间
实例化普通Model对象
$Model = new \Model\xxxModel();
除了可以实现简单操作(调用父类Model方法实现
也可以实现一些复杂操作(调用具体普通Model方法实现)


使用D函数实例化
1>实例化父类Model对象===可以用于执行原生SQL语句(普通Model也可以)
$model = D();

2>实例化父类Model对象,同时指定数据表
$goods = D("Goods")实例化父类Model对象,同时操作goods数据表(该方式使得一个数据表即使没有对应的Model模型类,也不影响操作数据表)


小计:如果一个表没有特殊的方法要求,就可以通过D(xxx)进行操作。
   如果数据表有一个特殊方法要求(例如用户名和密码要进行特殊判断)就需要在普通Model模型类里边定义好,通过new 、Model、xxxModel()实例化对象,进而进行操作方法。

4数据库的查询操作

调用方法:Model ->select();
具体使用:
	$model ->select();//查询并返回数据表全部记录信息
	$model->select(主键id值);//查询主键信息等于id值得记录
	$model->select('id1,id2,id3...'); //查询主键信息在条件范围内的记录
(使用select()方法会始终返回一个二维数组信息)


具体数据操作方法使用
1>where()条件
	$model->where(条件值);//条件值就是SQL语句where后边的结果值
2>	limit()限制条件
	$model->limit(数字);//限制查询记录条数
	$model->limit(偏移量,长度)//偏移量等于页码减1 *长度 不推荐使用
3>	fielf()限制条件查询字段
	$model->field(字段1,字段2,字段3);
4>	order()排序
	$model->order('排序条件'asc/desc);
5>	group()分组查询group by
	$model->group(分组条件);
6> having()条件设置方法
	having设置查询条件的效果与where使用效果类似
	区别:
	where:语句条件字段,必须是 数据表中存在的字段
	having:语句条件,必须是结果集中存在的字段








连贯操作

以上具体方法在使用的时候可以一并使用多个,形成连贯操作,并且顺序要求
例如:
$obj ->limit()->order()->field->having()->group()
每个方法执行完毕都把参数信息传递给成员options,该options形成一个数组系统最后就是遍历options数组把一个复杂的SQL语句给拼装起来的

5.数据添加操作

调用方法:model-> add();
具体两种方式使用:
1>数组方式
	$数组 = array{
		元素(下标=>元素值),
		...
 }
	下标:必须是数据表字段名称(否则不添加到数据表记录里边)
	$model(普通对象)->add(数组);
	数组的元素键名与数据表字段名称必须一致
2>	AR(Active Record 活跃记录)方式
	$model -> 属性(字段) = 值;//属性字段 与 数据表一致 否则不能写入数据
	$model ->add();
	
	AR规范要求:
	1>一个Model模型类与一个具体的数据表对应
	2>Model模型类实例化的对象 与 数据表一一对应
	3>Model对象的属性 与 记录字段对应
	TP框架的AR是仿真产品,因为在每个业务Model模型类里边并不存在对应的数据表字段信息。




6.数据修改操作

	调用方法 Model 对象 ->save()
	与add添加一致,具体有两种方式使用
	1>	数组方式
		$model->save(数组);
	2>	AR方式
		$model->	属性(字段)= 值;
		...
		$model->save();

		数组元素下标(属性字段)必须以数据表字段一致
		save()方法返回受影响的记录条数
	!!! 数据表修改必须设置条件,主键id或者where,二选其一即可 否者操作失败

7.在后台实现数据的修改操作

1> get参数的传递和接收

	pathinfo路由解析方式传递get参数信息格式:
	http://网址/index.php/分组/控制器/操作方法/名称/值/名称/值...
	控制器操作方法接收get参数:
	并不是直接使用$_GET接收信息,而是通过方法的形式参数接收。
	function 方法名称($名称,$名称){}
	传递的get变量名称与方法形参变量名称必须一致
	(形参在没有默认值的情况下,每次请求必须传值)

8.执行原生SQL语句

$sql = "SQL语句";

	1>	查询语句:	$model对象 ->query($sql);//返回一个二维数组
	2>	添加/删除/修改语句		$model对象-> execute($sql); //	返回受影响记录条数


=========================================================================================

// 跳转到 edit 操作   
$this->redirect('edit');  
// 跳转到 UserAction下的edit 操作   
$this->redirect('User/edit');  
// 跳转到 Admin分组默认模块默认操作  
$this->redirect('Admin/'); 
// 跳转到 Admin分组Index模块view操作  
$this->redirect('Admin-Index/view');  
// 跳转到 Admin分组Index模块view操作,uid参数为1,延迟3秒跳转  
$this->redirect('Admin-Index/view', array('uid'=>1), 3,'页面跳转中~')  
// 跳转到 其他OtherApp项目(非分组)的Admin项目分组User模块view操作   
$this->redirect('OtherApp://Admin-User/view');

implode 把数组分成字符串
eg:implode(',',$array);//把$array以 ,分割成字符串





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值