zoukankan      html  css  js  c++  java
  • 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时一样了

  • 相关阅读:
    git创建远程分支
    npm 设置淘宝镜像的两个方法
    webpack + ts 项目的初始化
    react组件间事件触发的两种方式
    PhpStorm 使用 xdebug 进行调试(三)
    PhpStorm 使用 Apache 运行 php 代码(二)
    搭建 PHP 开发环境(Apache + PHP)(一)
    Centos7 安装 MongoDB
    Vue 中使用 vuex(十三)
    Vue 中使用 vue-router(十二)
  • 原文地址:https://www.cnblogs.com/echonn/p/2722552.html
Copyright © 2011-2022 走看看