重识TP5中模型

摘要:
//开启自动写入时间戳字段protected$autoWriteTimestamp=true;//定义时间戳字段名protected$createTime='create_ts';protected$updateTime='update_ts';那么换种方式:$a=newAutoTypeModel();$a-˃data;$a-˃pid=3;echo"";echo$a-˃name;//heheecho"";echo$a-˃tree;//treeecho"";echo$a-˃save();//1echo"";echo$a-˃id;//52echo"";echo$a-˃create_ts;//2018-12-1916:54:40echo"";echo$a-˃update_ts;//2018-12-1916:54:40echo"";echo$a-˃pid;//3exit;修改一条数据:$a=AutoTypeModel::get;//$a-˃id=20;$a-˃name="oo2";echo"";echo$a-˃name;echo"";echo$a-˃tree;echo"";echo$a-˃id;echo"";echo$a-˃create_ts;echo"";echo$a-˃update_ts;echo"";echo$a-˃pid;echo"";echo$a-˃save();exit;OR//闭包修改$a=AutoTypeModel::get;//$a-˃id=20;$a-˃name="oo1";echo"";echo$a-˃name;echo"";echo$a-˃tree;echo"";echo$a-˃id;echo"";echo$a-˃create_ts;echo"";echo$a-˃update_ts;echo"";echo$a-˃pid;echo"";echo$a-˃save();exit;同时修改多条数据,如下写法请注意只能修改一条数据哦,证明newModel的时候只对一条或者一行数据有效://闭包修改$a=AutoTypeModel::get;那么可以将newModel想象成数据库的一条数据对它操作把,如果要操作多条数据,那么可以newModel多次$a=AutoTypeModel::get;$b=AutoTypeModel::get;$c=AutoTypeModel::get;$name="oo";$a-˃name=$name;$b-˃name=$name;$c-˃name=$name;echo"";echo$a-˃save();//1echo"";echo$b-˃save();//1echo"";echo$c-˃save();//1exit;当然也可以使用:$a=newAutoTypeModel;echo"";echo$a-˃save;//3exit;

创建一个表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 = newAutoTypeModel();
        $a->data(['name'=>'hehe','tree'=>'tree']);
        echo "
";
        echo $a->name; //hehe
        echo "
";
        echo $a->tree; //tree
        echo "
";
        echo $a->save(); //1
        echo "
";
        echo $a->id; //41
        echo "
";
        echo $a->create_ts; //类的属性不存在:appautomodelAutoTypeModel->create_ts
        echo "
";
        echo $a->update_ts; //类的属性不存在:appautomodelAutoTypeModel->update_ts
        echo "
";
        echo $a->pid; //类的属性不存在:appautomodelAutoTypeModel->pid
        exit;

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

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

那么换种方式:

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

修改一条数据:

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

OR

        //闭包修改
        $a = AutoTypeModel::get(function ($query){
            $query->where('id',20);
        });
//$a->id = 20;
        $a->name = "oo1";
        echo "
";
        echo $a->name;
        echo "
";
        echo $a->tree;
        echo "
";
        echo $a->id;
        echo "
";
        echo $a->create_ts;
        echo "
";
        echo $a->update_ts;
        echo "
";
        echo $a->pid;
        echo "
";
        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 "
";
        echo $a->save(); // 1
        echo "
";
        echo $b->save(); // 1
        echo "
";
        echo $c->save(); // 1
        exit;

当然也可以使用:

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

免责声明:文章转载自《重识TP5中模型》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇修改xampp-apache访问目录华为的快服务智慧平台是牛皮还是牛B?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

php变量和字符串连接符——点

连接符——点,本身也是一种运算符。它真正的名字应该叫“字符运算符”。作用是把两个字符串连接起来。 echo 字符 . 变量 . 字符;  //点号把三个值连接成为一个,运行正常。 例: 1.字符串+变量+字符串 echo("<!--".$result."-->"); 2.变量+变量echo($result.$result); 3.字符串+变量...

centos 下用shell删除多个目录下删除指定目录下创建日期大于30天的.log .txt文件

#删除指定目录下创建日期大于30天的.log .txt文件(如果目录下文件总数少于10个,就不删除),删除的文件记录写入到日志 #!/bin/bash #待删除的文件路径数组,多个目录换行 locations=( /root/logs/web1/ /root/logs/web2/ /root/logs/web3/ ) #输出的文件...

Linux Shell 高级编程技巧2----shell工具

2.shell工具    2.1.日志文件        简介            创建日志文件是很重要的,记录了重要的信息。一旦出现错误,这些信息对于我们排错是非常有用的;监控的信息也可以记录到日志文件        常用的日志文件的方法            以时间为标识的日志文件                例子 #!/bin/bash #当前的...

shell脚本批量注释

1、使用冒号配合追加输入重定向 推荐使用此方法 冒号在Bash里也是一个命令,表示啥都不做,<<是输入重定向,两个EOF(可用其它特殊成对字符替代)之间的内容通过<<追加给冒号(:), 但是冒号对它们啥都不做,就相当于没做任何处理和输出,就相当于注释了。 [root@web01 ~]# cat oldboy.sh #!/bin/b...

如何让您的php也支持pthreads多线程

  我们常常会碰到这样一种情况,开发环境在windows下开发,而生产环境确是linux。windows下能正常运行,上传到linux后却无法好好地玩耍了。然后开始了一轮尼玛式的疯狂的查找原因,最后发现是服务器环境问题。这时只能默默地爆一句shit。最近在用php多线程开发一个小功能也碰到类似的问题,在此记录一下。   1、查找资料发现php5.3或以上,...

zabbix 监控客户端数据库 zabbix客户端

[root@zabbix客户端 zabbix]# grep -v "^$" etc/zabbix_agentd.conf|grep -v "^#" LogFile=/tmp/zabbix_agentd.log Server=127.0.0.1,zabbix_server_ip ServerActive=zabbix_server_ip:10051#注...