创建一个表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. error: style attribute '@android:attr/windowEnterAnimation' not found.

    在Project/gradle.properties中添加 android.enableAapt2=false

  2. POJ 1958 Strange Towers of Hanoi

    Strange Towers of Hanoi Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 3784 Accepted: 23 ...

  3. 10.4ORM回顾!

    2018-10-4 17:41:52 继续优化一下我的博客项目!! 贴上orm参考连接:https://www.cnblogs.com/yuanchenqi/articles/8963244.html ...

  4. ThinkPHP框架 AJAX方法返回 AJAX实现分页例子:

    在模块控制器Controller文件夹里创建一个 FenyeController.class.php控制器 <?php namespace Admin\Controller; use Think ...

  5. python金融与量化分析------Matplotlib(绘图和可视化)

    -----------------------------------------------------------Matplotlib:绘图和可视化------------------------ ...

  6. db2 v9.7 新特性cur_commit 能够实现未提交读新特性cur_commit 能够实现未提交读

    db2 get db cfg|find "CUR_COMMIT" 当前已落实                                   (CUR_COMMIT) = ON ...

  7. MySQL的JDBC驱动源码解析

    原文:   MySQL的JDBC驱动源码解析 大家都知道JDBC是Java访问数据库的一套规范,具体访问数据库的细节有各个数据库厂商自己实现 Java数据库连接(JDBC)由一组用 Java 编程语言 ...

  8. [No0000D5]便利所有子目录更改后缀名bat

    pause for /r %%i in (.) do ( cd %%i ren *.txt *.dll ) pause

  9. navicat连接oracle失败

    正常是成功的,失败的话,就是oci.dll的问题 在这边下载: https://www.oracle.com/technetwork/topics/winsoft-085727.html 然后找到对应 ...

  10. Python摸爬滚打之day04----基本数据类型(列表,元组)

    1.列表 列表是可变的, 有序的数据类型,列表是按照添加顺序来保存的,可以存放各种数据类型. 1.1    列表的切片(同字符串) 1.2    列表的增删改查 注意: 列表是可以直接在列表上面进行操 ...