Laravel8学习笔记:mysql中时间字段的处理

5 篇文章 0 订阅
4 篇文章 0 订阅

参考:https://blog.csdn.net/qq_38358436/article/details/88096829

1.关闭自动更新时间字段

因为laravel的模型会自动更新 created_at 和 updated_at (默认是两个这样的名字)两个字段,如果不想要这两个字段可以 关闭

class User extends Model
{
    $timestamps = false;
}

关闭其中一个字段保留另一个,只想要其中一个字段 created_at 只需要将定义一个常量将 updated_at 的值设置为 null 即可

class User extends Model
{
    const UPDATED_AT = null;
}

如果你使用的数据库迁移(migration) 在迁移的时候也可以设置

class CreateUsersTable extends Migration {
    public function up() {
        Schema::create('users', function(Blueprint $table) {
        $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
    });
}

或者你也可以自定义时间字段名

// 自定义时间字段名
const CREATED_AT = 'creation_date';
const UPDATED_AT = 'updated_date';

laravel8在操作数据库时,会默认填写创建时间和更新时间,默认的格式是日期格式,但是我们数据库中存储的是时间戳,因此这里用到了下面的类,模型继承该类即可,注意下面的几个方法都会影响你的数据哦,需要哪个拿哪个

class BaseModel extends Model
{
    /**
     * 获取当前时间
     *
     * @return int
     */
    public function freshTimestamp() {
        return time();
    }

    /**
     * 避免转换时间戳为时间字符串
     *
     * @param DateTime|int $value
     * @return DateTime|int
     */
    public function fromDateTime($value) {
        return $value;
    }

    /**
     * lavavel返回的时间不是单纯的字符串,而是一个 carbon 对象, 因为是一个对象,可以更加灵活的控制时间显示的格式,但是这个方法可以避免转换carbon
     * select的时候避免转换时间为Carbon
     *
     * @param mixed $value
     * @return mixed
     */
    //  protected function asDateTime($value) {
    //      return $value;
    //  }

    /**
     * 从数据库获取的为获取时间戳格式
     *
     * @return string
     */
    public function getDateFormat() {
        return 'U';
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值