创建一个表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. PHP利用ImageMagick把PDF转成PNG

    http://blog.csdn.net/longaction2012/article/details/12257867

  2. mui---获取上一级窗口

    我们在用MUI做APP的时候,会用到要获取上一级的窗口.具体方法:获取当前webview窗口的创建者. 代码: plus.webview.currentWebview().opener();

  3. mui---自定义页面打开的方向

    在使用MUI做APP的时候,会考虑对页面的打开方向做规定,MUI也给我们提供了很多种页面的打开方式. 具体参考: http://ask.dcloud.net.cn/question/174 MUI做A ...

  4. 【react】---styled-components的基本使用---【巷子】

    一.官网地址 https://www.styled-components.com/ 二.styled-components 1.styled-components 样式化组件,主要作用是它可以编写实际 ...

  5. elasticsearch.yml配置文件

        Elasticsearch的配置文件在config文件夹下,其中有elasticsearch.yml.logging.yml两个配置文件,其中elasticsearch.yml是用来配置Ela ...

  6. easyui---combogrid

    选择一个数据表格某行记录 依赖panel 和datagrid combogrid:<select id="cc" name="dept" style=&q ...

  7. CentOs7下搭建LAMP环境

    ● 环境搭建 参考: http://blog.csdn.net/zph1234/article/details/51248124 http://www.jb51.net/os/188488.html ...

  8. Javascript扩展Date的prototype实现时间format函数 2017-06-29T09:10:00.000Z日期转换

    /*时间格式化 公用方法*/ Date.prototype.format = function(fmt) { // var o = { "M+": this.getMonth() ...

  9. dyld环境变量

    苹果APP启动,分为两个过程:系统dylib动态链接库 app的main函数启动过程. main函数过程直接对iOS开发者.这里备忘的dylib过程: 一.dyld加载到虚拟内存     1. loa ...

  10. [administrative][CentOS][NetworkManager] 万恶的NetworkManager到底怎么用

    这好像是第三次不得不去学会NetworkManager的用法,可是它真的很难用.社区里无人不吐槽. 然而,还是要用! 这次从redhat的文档入手,也许可以成功 --! https://access. ...