创建一个表MODEL,下面展现代码片段:

`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(30) NOT NULL DEFAULT '' COMMENT '名称', `pid` int unsigned NOT NULL DEFAULT 0 COMMENT '父级ID',
`tid` int unsigned NOT NULL DEFAULT 0 COMMENT '顶级ID',
`tree` varchar(255) NOT NULL DEFAULT '' COMMENT '层级树(,1,2,)', `status` tinyint(1) unsigned NOT NULL DEFAULT 1 COMMENT '状态',
`sort` int unsigned NOT NULL DEFAULT 100 COMMENT '排序',
`is_top` tinyint(1) unsigned NOT NULL DEFAULT 0 COMMENT '是否顶置',
`create_ts` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '创建时间',
`update_ts` int(10) unsigned NOT NULL DEFAULT 0 COMMENT '修改时间',
`create_user` int unsigned NOT NULL DEFAULT 0 COMMENT '创建用户',
`update_user` int unsigned NOT NULL DEFAULT 0 COMMENT '修改用户',
`remark` text COMMENT '详情描述(json)', PRIMARY KEY (`id`),

添加一条数据的时候,只初始化赋值的值,对于未赋值的值(除ID外)会抛出类的属性不存在异常:

        $a = new AutoTypeModel();
$a->data(['name'=>'hehe','tree'=>'tree']);
echo "\n";
echo $a->name; // hehe
echo "\n";
echo $a->tree; // tree
echo "\n";
echo $a->save(); //
echo "\n";
echo $a->id; //
echo "\n";
echo $a->create_ts; // 类的属性不存在:app\auto\model\AutoTypeModel->create_ts
echo "\n";
echo $a->update_ts; // 类的属性不存在:app\auto\model\AutoTypeModel->update_ts
echo "\n";
echo $a->pid; // 类的属性不存在:app\auto\model\AutoTypeModel->pid
exit;

注意:如果开启自动写入时间戳字段,那么会自动赋值到 create_ts,update_ts,就不会抛出这两个字段的异常啦!

    // 开启自动写入时间戳字段
protected $autoWriteTimestamp = true;
// 定义时间戳字段名
protected $createTime = 'create_ts';
protected $updateTime = 'update_ts';

那么换种方式:

        $a = new AutoTypeModel();
$a->data(['name'=>'hehe','tree'=>'tree']);
$a->pid = 3;
echo "\n";
echo $a->name; // hehe
echo "\n";
echo $a->tree; // tree
echo "\n";
echo $a->save(); //
echo "\n";
echo $a->id; //
echo "\n";
echo $a->create_ts; // 2018-12-19 16:54:40
echo "\n";
echo $a->update_ts; // 2018-12-19 16:54:40
echo "\n";
echo $a->pid; //
exit;

修改一条数据:

        $a = AutoTypeModel::get(20);
// $a->id = 20;
$a->name = "oo2";
echo "\n";
echo $a->name;
echo "\n";
echo $a->tree;
echo "\n";
echo $a->id;
echo "\n";
echo $a->create_ts;
echo "\n";
echo $a->update_ts;
echo "\n";
echo $a->pid;
echo "\n";
echo $a->save();
exit;

OR

        // 闭包修改
$a = AutoTypeModel::get(function ($query){
$query->where('id',20);
});
// $a->id = 20;
$a->name = "oo1";
echo "\n";
echo $a->name;
echo "\n";
echo $a->tree;
echo "\n";
echo $a->id;
echo "\n";
echo $a->create_ts;
echo "\n";
echo $a->update_ts;
echo "\n";
echo $a->pid;
echo "\n";
echo $a->save();
exit;

同时修改多条数据,如下写法请注意只能修改一条数据哦,证明 new Model 的时候只对一条或者一行数据有效:

        // 闭包修改
$a = AutoTypeModel::get(function ($query){
$query->whereIn('id','20,21,22');
});

那么可以将 new Model 想象成数据库的一条数据对它操作把,如果要操作多条数据,那么可以 new Model 多次

        $a = AutoTypeModel::get(20);
$b = AutoTypeModel::get(21);
$c = AutoTypeModel::get(22);
$name = "oo";
$a->name = $name;
$b->name = $name;
$c->name = $name;
echo "\n";
echo $a->save(); // 1
echo "\n";
echo $b->save(); // 1
echo "\n";
echo $c->save(); // 1
exit;

当然也可以使用:

       $a = new AutoTypeModel;
echo "\n";
echo $a->save(['name'=>'aaaa'],['id'=>['in','20,21,22']]); // 3
exit;

重识TP5中模型的更多相关文章

  1. 重识linux-SSH中的SFTP

    重识linux-SSH中的SFTP 1 SFTP也是使用SSH的通道(port 22) 2 SFTP是linux系统自带的功能 3 连接上主流的ftp软件都支持sftp协议 比如flashfxp,fi ...

  2. 实例讲解TP5中关联模型

    https://blog.csdn.net/github_37512301/article/details/75675054 一.关联模型在关系型数据库中,表之间有一对一.一对多.多对多的关系.在 T ...

  3. iOS开发——项目篇—高仿百思不得姐 05——发布界面、发表文字界面、重识 bounds、frame、scrollView

    加号界面(发布模块) 一.点击加号modal出发布模块,创建控件,布局控件1)使用xib加载view,如果在viewDidLoad创建控件并设置frame 那么self.view 的宽高 拿到的是xi ...

  4. <记录>TP5 关联模型使用(嵌套关联、动态排序以及隐藏字段)

    在数据库设计中,常常会有如下这种关联模型,分类表中一条分类对应多个商品表中的商品 如果要获得分类表中每条分类 以及 对应的商品的信息,则需要先查询分类表中的数据,然后根据结果遍历查询商品表,最后把数据 ...

  5. 重识linux-关于selinux

    重识linux-关于selinux 1 selinux是一个内核模块,有美国国家安全局研发,主要在基因redhat分支的系统上实现,当初的设计是未了避免用户资源的误用, 而SELINUX使用的是MAC ...

  6. 重识linux-仅执行一次的工作调动at

    重识linux-仅执行一次的工作调动at 使用的是at命令 1 在系统中使用的是 atd这个服务 默认是不开启的 先启动 atd start 查看atd的状态 service atd status 2 ...

  7. TP5 关联模型使用(嵌套关联、动态排序以及隐藏字段)

    在数据库设计中,常常会有如下这种关联模型,分类表中一条分类对应多个商品表中的商品 如果要获得分类表中每条分类 以及 对应的商品的信息,则需要先查询分类表中的数据,然后根据结果遍历查询商品表,最后把数据 ...

  8. SpringBoot31 重识Spring01-环境搭建、Actuator监控、属性配置、多环境配置

    1 前言 1.1 学习阶段说明 从2016年9月开始接触IT,学习经历主要分为以下三个阶段 1.1.1 入门阶段 从最基础的前端技术HTML.JavaScript.CSS开始入门,再到后端技术Java ...

  9. tp5.0 模型查询数据的返回类型,分页

    一开始用painate()这个函数的时候,发现有的查询方式不能使用这个函数,由此了解到了模型查询和普通查询返回类型的不同 1.原生查询方法 Db::query("select * from ...

随机推荐

  1. python socket 实现的简单http服务器

    预备知识: 关于http 协议的基础请参考这里. 关于socket 基础函数请参考这里. 关于python 网络编程基础请参考这里. 一.python socket 实现的简单http服务器   废话 ...

  2. adb shell命令行

    d: cd D:\software\adt-bundle-windows-x86-20131030\sdk\platform-tools ————————> sdk的路径 adb shell s ...

  3. 通过JVM 参数 实现spring 应用的二进制代码与配置分离。

    原创文章,转载请注明出处 分离的好处就不说了.说下分离的思路.通过JVM 参数-D 添加 config.path 的property 到系统中.系统通过System.getProperty(confi ...

  4. Ubuntu 基于Docker的TensorFlow 环境搭建

    基于Docker的TensorFlow 环境搭建 基于(ubuntu 16.04LTS/ubuntu 14.04LTS) 一.docker环境安装 1)更新.安装依赖包 sudo apt-get up ...

  5. nodejs的koa2框架

    官网文档 cnpm i --save-dev koa2 koa-router koa-body koa-static request npm install --save koa2 const koa ...

  6. meat http-equiv 属性详解

    转自 http://kinglyhum.iteye.com/blog/827807 http-equiv 属性提供了 content 属性的信息/值的 HTTP 头. http-equiv 属性可用于 ...

  7. centos 7 删除yum安装的openjdk

    # java -version # rpm -qa | grep java rpm -e --nodeps (rpm -qa的结果们) # java -version

  8. PAT甲级1139 First Contact

    题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805344776077312 题意: 有m对朋友关系,每个人用4为数 ...

  9. day4:数据结构list

    1,一直输入用户名,输入Q退出,注意用户的输入别忘了加strip,和upper不区分大小写,list最后一位添加append li = [] while 1: name = input("& ...

  10. block diagonal matrix 直和 块对角矩阵 不完美 有缺陷 缩放 射影几何

    小结: 1.block diagonal matrix  直和 块对角矩阵 A block diagonal matrix is a block matrix that is a square mat ...