当先锋百科网

首页 1 2 3 4 5 6 7

thinkphp自动完成、软删除 和时间戳

一、总结

自动完成:没有手动赋值的情况下进行手动处理

软删除:实现假删除,可以进行恢复

时间戳:系统支持自动写入创建和更新的时间戳字段

 

二、thinkphp自动完成、软删除 和时间戳

1、自动完成

        

         1、修改器和自动完成区别

 

        修改器:数据赋值的时候自动进行转换处理

        自动完成:没有手动赋值的情况下进行手动处理

 

    2、自动完成

 

             // 增加和修改操作都会执行

             protected $auto=[];

             // 创建数据执行

             protected $insert=['create_time'];

             // 修改数据执行

             protected $update=['update_time'];

 

2、时间戳

        

         1、系统支持自动写入创建和更新的时间戳字段

                   1) 在配置文件中设置

                            // 自动写入时间戳字段

                            'auto_timestamp'  => true,

 

                   2) 在数据模型中设置

 

                            // 设置自动写入时间戳

                            protected $autoWriteTimestamp=true;

 

         2、可以设置字段默认值

 

                   // 增加时间的字段

                   protected $createTime='create_times';

                   // 更新时间的字段

                   protected $updateTime='update_times';

 

         3、取消更新时间戳设置

 

                   protected $updateTime=false;

 

3、软删除

        

         1、作用:

 

                   实现假删除,可以进行恢复

 

         2、实现

 

                   <?php

                            // 声明命名空间

                            namespace app\index\model;

                            // 导入系统的数据模型

                            use think\Model;

                            // 配合软删除

                            use traits\model\SoftDelete;

                            // 声明user模型

                            class User extends Model{

                                     // 使用软删除

                                     use SoftDelete;

                                     // 设置删除的时间戳

                                     protected $deleteTime="delete_times";

 

                            }

 

         3、控制器      

 

 

                   1、删除数据

 

                            $res=User::destroy(15);

 

                   2、获取数据

 

                            $res=User::get(15);

                            // 软删除 数据库数据存在,但是get获取不到

 

                   3、直接删除数据

 

                   $res=User::destroy(14,true);

 

                   $user=new User();

 

                   $res=$user->where("id",'5')->delete();

 

         4、读取所有数据包含软删除数据

 

                 $res=User::withTrashed()->find(15);

                 $res=User::withTrashed()->select();

 

             5、仅仅读取软删除数据

 

                 $res=User::onlyTrashed()->select();

                 $res=User::onlyTrashed()->find(1);