thinkphp5 时间戳

gaosf 2020-04-25

系统支持自动写入创建和更新的时间戳字段,有两种方式配置支持。

第一种方式,是在数据库配置文件中添加全局设置:

// 开启自动写入时间戳字段
‘auto_timestamp‘ => true,

第二种是直接在单独的模型类里面设置:

protected $autoWriteTimestamp = true;

字段名默认创建时间字段为create_time,更新时间字段为update_time,系统会自动写入create_time和update_time字段,而不需要定义修改器。

如果你的数据表字段不是默认值的话,可以按照下面的方式定义:

class User extends Model {
    // 定义时间戳字段名
    protected $createTime = ‘create_at‘;
    protected $updateTime = ‘update_at‘;}

单独设置关闭某个字段

class User extends Model {
    // 关闭自动写入update_time字段
    protected $updateTime = false;}

数据完成

数据自动完成指在不需要手动赋值的情况下对字段的值进行处理后写入数据库。可以分别在写入、新增和更新的时候进行字段的自动完成机制。

class User extends Model{
    protected $auto = [];
    protected $insert = [‘ip‘,‘status‘ => 1];  
    protected $update = [‘login_ip‘];  
    protected function setIpAttr()
    {
        return request()->ip();
}
}

事件

模型事件是指在进行模型的写入操作的时候触发的操作行为,包括模型的save方法和delete方法。

模型事件只可以在调用模型的方法才能生效,使用查询构造器通过Db类操作是无效的thinkphp5 时间戳

User::event(‘before_insert‘, function ($user) {
            if ($user->status != 1) {
                return false;
            }
        });

关联:

一对一关联:A表中一条数据对应B表一条数据

一对多关联:A表中一条数据对应B表多条数据

多对多关联:A表中一条数据对应B表多条数据并且B表中一条数据对应A表中多条数据

一对一关联

定义一对一关联,例如,一个用户都有一个个人资料。

hasOne(‘关联模型名‘,‘外键名‘,‘主键名‘,[‘模型别名定义‘],‘join类型‘);

相关推荐