创建一个表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. Android Autosizing TextViews

    https://developer.android.com/guide/topics/ui/look-and-feel/autosizing-textview  Autosizing TextView ...

  2. [原]Jenkins(三)---Jenkins初始配置和插件配置

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. *版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/5331 ...

  3. vagrant up connection time out

    vagrant up connection time out 在一台重装系统的机子上装vagrant后 vagrant up 无法启系统 D:\work\vagrant>vagrant up B ...

  4. Centos 解决SSH 免密码登录 以及Crontab制作定时SSH自动登录和关闭的脚本

    一.SSH免密码登录 假设要登录的机器为192.168.1.100,当前登录的机器为192.168.1.101. 首先在101的机器上生成密钥(如果已经生成可以跳过): $ ssh-keygen -t ...

  5. MacTex TexStudio Configuration 配置

    在Mac上使用Latex的话主流是安装MacTex,对于IDE的选择有很多,像什么自带的TexShop,或者是TexStudio,Latexian,Texpad,Texmaker等,甚至可以直接使用一 ...

  6. MSSQL 将大表改成已分区表

    --select * from sys.partition_functions --select * from sys.partition_range_values use [UpdateLog] g ...

  7. eclipse启动报错:Could not create the java virtual machine

    用maven.springboot开发时,安装了当时最新版的eclipse(3.5.5).eclipse解压版的非常方便,想先安装了看看.暂时没有升级其他软件. 打开的时候报错: 原因其实就是还木有升 ...

  8. Direct Visual-Inertial Odometry with Stereo Cameras

    这对于直接方法是特别有益的:众所周知直接图像对准是非凸的,并且只有在足够准确的初始估计可用时才能预期收敛.虽然在实践中像粗到精跟踪这样的技术会增加收敛半径,但是紧密的惯性积分可以更有效地解决这个问题, ...

  9. POJ 1655 - Balancing Act - [DFS][树的重心]

    链接:http://poj.org/problem?id=1655 Time Limit: 1000MS Memory Limit: 65536K Description Consider a tre ...

  10. Mysql thread 与 OS thread

    测试环境信息如下: OS:Ubuntu 16.04 LTS Mysql:Mysql 5.7.18,使用docker images运行的实例 Mysql如何处理client请求 在Mysql中,连接管理 ...