什么是ORM
(1)mysql是关系型数据库,有行有列
编程语言是面向对象的
那么如何将关系型数据库中的数据变成面向对象语言能够操作的对象类型的数据
(2)ThinkPHP根据ActiveRecord模式实现ORM(对象关系映射,将数据表映射到类,记录映射到对象,字段映射到对象的属性)
ORM 增删改查
使用ActiveRecord模式完成数据的增删改查
public function orm_test(){
//Goods表示一个类通过M()函数调用的话获得对象(一条记录) $model就是一个空的记录
$model=M('Goods');
//设置这个对象属性相当于设置这条记录的字段
$model->goods_name='N85';
$model->shop_price='1000';
$model->goods_number='30';
$model->add();
//var_dump($model);
}
//按照ORM查询数据
public function orm_select(){
//查询主键为1的商品的记录
$model=M('Goods');
//传统的方式获得
//$list=$model->where('goods_id=1')->select;
//利用orm查询记录
$list=$model->find(1);
//var_dump($list);
}
public function orm_update(){
$model=M('Goods');
//获得主键为5的记录(主键为5的一个对象)
$model->find(5);
$model->goods_name='iPhone 5S';
$model->save();
}
public function orm_del(){
$model=M('Goods');
$model->find(5);
$model->delete();
}
模型的自动验证
(1)我们只需要告诉模型层验证规则
将模型层的验证规则,保存到对象的属性中,$_validate
$_validate 属性是一个数组,这个数组的每个元素(也是数组,每个数组就是一个规则)
(2)如果需要触发验证,需要调用模型的create()方法
如果成功返回创建好的数据,如果失败返回false
publicfunction goods_num(){
$model=D('Good');
$data=array(
'goods_name'=>'iPhone 6',
'shop_price'=>'6000',
);
//调用create方法的时候自动的按照定义的规则完成数据的填充
var_dump($model->create($data));
}
自定义模型
(1)模型的定义,命名方式:
去掉表前缀的数据表名称,采用驼峰法,首字母大写,后面加上Model.class.php
(2)关于数据表名称的属性的定义:
tableName
trueTableName
例如在数据库有一个goods表,而我们定义的模型类是GoodModel,按照约定这个模型名称应该是Good,对应的表应该是good,这时我们就需要修改模型的属性来改变默认的规则
模型的自动填充
自动填充,也就是数据的自动处理功能,在新增数据或者更新数据的时候,自动的完成一些操作,例如处理默认值,密码加密等等
案例:创建用户的时候,将密码自动转换成md5编码格式
public function md_pass(){
$model=D('MysqlUser');
$data=array(
'user_name'=>'xiaobai',
'user_pass'=>'xiaobai123'
);
var_dump($model->create($data));
$model->add();
}
字段映射
字段映射:将表单中的字段,映射到数据表的字段,在保存的时候,会将表单数据转换成数据表的数据
实现:
在自定义模型中添加$_map属性,格式也是数组
'表单字段' => '数据表字段'