创建一个表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. M0 M4关于库函数的讲解(以时钟为例)

    #define CLK_PWRCON_PD_WAIT_CPU_Pos 8 #define CLK_PWRCON_PD_WAIT_CPU_Msk (1ul << CLK_PWRCON_PD_ ...

  2. image-set实现Retina屏幕下图片显示详细介绍

    支持image-set:如果你的浏览器支持image-sete,而且是普通显屏下,此时浏览器会选择image-set中的@1x背景图像: Retina屏幕下的image-set:如果你的浏览器支持im ...

  3. wchar_t和char转化

    char* WcharToChar(const wchar_t* wp) { char *m_char; int len = WideCharToMultiByte(CP_ACP, 0, wp, wc ...

  4. bash 的相关配置

    bash 参数自动补全 请安装 bash-completion bash 提示符 说明:参考文档 1. 简洁风格 if [[ ${EUID} == 0 ]] ; then PS1='\[\033[01 ...

  5. vscode 的 vue模板

    12 { "Print to console": { "prefix": "vue", "body": [ " ...

  6. 带分数|2013年蓝桥杯B组题解析第九题-fishers

    带分数 100 可以表示为带分数的形式:100 = 3 + 69258 / 714 还可以表示为:100 = 82 + 3546 / 197 注意特征:带分数中,数字1~9分别出现且只出现一次(不包含 ...

  7. bootstrap modal 弹出其他页面

    此文是可以的,是复制的然后粘贴 1.不使用js 方式 1.1 按钮 <a class=" btn default" href="ui_modals_ajax_sam ...

  8. Codeforces 180C - Letter - [简单DP]

    题目链接:http://codeforces.com/problemset/problem/180/C 题意: 有一段字符串,包含大小写字母,每次可以将其中一个字母由大写变成小写,或者小写变成大写.要 ...

  9. java8集合--LinkedList纯源码

    package Queue; import java.util.*; import java.util.function.Consumer; /** * 双端队列主要实现list接口和Deque接口, ...

  10. 10.11JAVA作业

    [实验任务一]:素数输出 1. 实验要求: (1)编写判断该数是否为素数的方法,并在主方法中对其进行调用. (2)注意编程规范:程序开头部分的目的,作者以及日期:必要的空格与缩进,适当的注释等: (3 ...