TP中Model

TP中Model的用法

====Model 增加一条数据===

$userModel = D('User');//创建模型实例

$data = array(键=>值,键=>值,......);    要求键与表的列保持一致

$model->add($data);  就会自动插入

这个过程演示的是ORM(数据关系映射)方式操作数据库,就是指:数组的键与表的列一一对应,一个数组与表的一行数据对应,插入数组即是插入一行。

Model 里还有一种 ActiveRecords (活动对象)  ,对象映射成表的一行,对象的属性映射成表的列

即把对象的属性与表的列对应起来,操作对象的属性就是在操作列的数值,保存该对象,数据(对象的属性)也就保存到数据库了

===ORM与ActiveRecorders的区别与联系===

model 有一个$data属性 , 这个 $data非常关键,又被TP称为“数据对象”,$data是一个数组(与表映射后的数组),CRUD操作中,数据都是在$data中中转的

ORM的过程

以$model->add($data); 为例,传参$data,分析$data数组,把$data数组里存在但是键名不是表的列,这样的单元去掉,即剩下的单元能与表的列一一对应

$data=array('username'=>'zhangsan','email'=>'zs@sohu.com','height'=>66);

表结构:(id,username,email),_facade之后,$data中的非字段单元数据'height'=>66 就被unset去了,然后再调用db类的insert方法入库了

ActiveRecorders的过程

是把自己的$this->data属性的值,赋给一个数组变量

当$userModel->username='zhangsan'; 时 调用__set()魔术方法,把‘zhangsan’放置到$this->data属性中,即$this->data['username']='zhangsan';

这样通过操作属性,其实是操作$this->data这个数组,最后再把属性赋给一个数组变量,然后对该数组变量的操作就和ORM时一样了

原文地址:https://www.cnblogs.com/echonn/p/2722552.html