Laravel & Eloquent 模型设置 created_at 和 updated_at

###1、设置默认字段
数据入库时一般都需要创建时间和修改时间,不想每次都在业务中填写,怎么办?创建一个BaseModel,BaseModel继承Eloquent/Model,自定义create_at、update_at字段,其他Model继承BaseModel即可

use Illuminate\Database\Eloquent\Model;

class BaseModel extends Model
{
    const CREATED_AT = 'create_time';
    const UPDATED_AT = 'modify_time';

}

###2、不需要记录修改时间怎么设置
最近做日志业务,只需要 created_at 字段就可以了,数据库不想添加 updated_at 字段。下面是解决方法:

解决方法
查看 Illuminate\Database\Eloquent\Model 后发现,有这样一行代码 use Concerns\HasTimestamps ,接下找到 trait HasTimestamps 看到 如下代码:

    protected function updateTimestamps()
    {
        $time = $this->freshTimestamp();

        if (! is_null(static::UPDATED_AT) && ! $this->isDirty(static::UPDATED_AT)) {
            $this->setUpdatedAt($time);
        }

        if (! $this->exists && ! $this->isDirty(static::CREATED_AT)) {
            $this->setCreatedAt($time);
        }
    }

    /**
     * Set the value of the "updated at" attribute.
     *
     * @param  mixed  $value
     * @return $this
     */
    public function setUpdatedAt($value)
    {
        $this->{static::UPDATED_AT} = $value;

        return $this;
    }

源码逻辑很简单,直接在对应的Model 中设置 const UPDATED_AT = null 就可以了。

本作品采用《CC 协议》,转载必须注明作者和本文链接
tinyzhe
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!