模型自动时间戳

  1. 系统自动创建和更新时间戳功能默认是关闭状态;
    2. 如果你想全局开启,在 database.php 中,设置为 true;
    1. // 自动写入时间戳字段
    2. 'auto_timestamp' => true,
  2. 如果你只想设置某一个模型开启,需要设置特有字段;
    1. //开启自动时间戳
    2. //在model中
    3. protected $autoWriteTimestamp = true;
  3. 当然,还有一种方法,就是全局开启,单独关闭某个或某几个模型为 false;
    5. 自动时间戳开启后,会自动写入 create_time 和 update_time 两个字段;
    6. 此时,它们的默认的类型是 int,如果是时间类型,可以更改如下:
    1. 'auto_timestamp' => 'datetime',
    2. //或
    3. protected $autoWriteTimestamp = 'datetime';
  4. 都配置完毕后,当我们新增一条数据时,无须新增 create_time 会自动写入时间;
    8. 同理,当我们修改一条数据时,无须修改 update_time 会自动更新时间;
    9. 自动时间戳只能在模型下有效,数据库方法不可以使用;
    10. 如果创建和修改时间戳不是默认定义的,也可以自定义;
    1. protected $createTime = 'create_at';
    2. protected $updateTime = 'update_at';
  5. 如果业务中只需要 create_time 而不需要 update_time,可以关闭它;
    1. protected $updateTime = false;
  6. 也可以动态实现不修改 update_time,具体如下:
    1. $user->isAutoWriteTimestamp(false)->save();

    模型只读字段

  7. 模型中可以设置只读字段,就是无法被修改的字段设置;
    2. 我们要设置 username 和 email 不允许被修改,如下:
    1. protected $readonly = ['username', 'email'];
  8. 除了在模型端设置,也可以动态设置只读字段;
    1. $user->readonly(['username', 'email'])->save();
  9. 同样,只读字段只支持模型方式不支持数据库方式;