参考: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';
}
}