You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lumen 7中重写默认时间戳名称无效问题求助

解决Lumen 7中重写Eloquent时间戳字段无效的问题

我来帮你搞定这个问题,之前我也碰到过类似的情况——你在模型里定义的常量本身是对的,但之所以没生效,核心问题出在迁移文件和模型的字段不匹配上,咱们一步步来修正:

1. 先修改迁移文件,确保数据库字段和模型常量对应

你之前用的$table->timestamps()方法会自动生成created_at和updated_at这两个默认字段,但你的模型要使用的是creation_date和last_update,所以得把迁移里的代码换掉:

// 替换原来的 $table->timestamps();
$table->timestamp('creation_date')->nullable();
$table->timestamp('last_update')->nullable();

如果已经运行过这个迁移,你需要:

  • 要么回滚迁移(php artisan migrate:rollback),修改原迁移文件后重新运行php artisan migrate;
  • 要么创建一个新的迁移文件,用table()方法修改字段名:
Schema::table('your_table_name', function (Blueprint $table) {
    $table->renameColumn('created_at', 'creation_date');
    $table->renameColumn('updated_at', 'last_update');
});

2. 确认模型中的配置正确

模型里的常量定义没问题,但可以显式加上$timestamps = true确保时间戳功能启用(默认是开启的,但显式写出来更保险):

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class YourModel extends Model
{
    // 自定义创建时间字段名
    const CREATED_AT = 'creation_date';
    // 自定义更新时间字段名
    const UPDATED_AT = 'last_update';

    // 显式启用时间戳(可选,默认已启用)
    public $timestamps = true;
}

3. 验证是否生效

你可以写个简单的测试代码,创建模型实例并保存,看看数据库里的字段是否正确填充:

$model = new YourModel();
// 填充其他字段...
$model->save();

// 打印时间字段,确认是否正确
dd($model->creation_date, $model->last_update);

这样操作后,Eloquent就会正确使用你自定义的时间戳字段啦~

内容的提问来源于stack exchange,提问作者nextzakir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 19:42:56