上一篇
Laravel默认提供全自动时间管理,让你的数据记录时间变得无比简单!🎉
created_at
,更新时自动更新updated_at
。$user->created_at->addDays(7); // 7天后 $user->updated_at->diffForHumans(); // "2小时前"
迁移文件中必须包含时间戳字段:
// 示例:创建用户表 Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP')); $table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP'))->nullable(); });
class User extends Model { public $timestamps = false; // 🔕 关闭所有时间戳 }
class Post extends Model { const UPDATED_AT = null; // ❌ 禁用updated_at // 或 const CREATED_AT = null; }
如果数据库字段名非默认,可自定义:
class Order extends Model { const CREATED_AT = 'order_time'; const UPDATED_AT = 'update_time'; }
$dateFormat
属性class Event extends Model { protected $dateFormat = 'Y-m-d H:i:s'; // 默认格式 // 或 protected $dateFormat = 'U'; // 时间戳格式 }
$timestamps = true
。$user->created_at = now(); $user->save();
$user->timestamps = false; // 🔒 临时禁用 $user->save();
在关联中启用时间戳:
class User extends Model { public function roles() { return $this->belongsToMany(Role::class)->withTimestamps(); } }
User::latest()->get(); // 按created_at降序 User::oldest('updated_at')->first(); // 按updated_at升序取最新
$user->touch(); // 同时更新created_at和updated_at $user->touchUpdatedAt(); // 仅更新updated_at
更新子模型时自动更新父模型:
class Comment extends Model { protected $touches = ['post']; // 关联post模型 public function post() { return $this->belongsTo(Post::class); } }
created_at
和updated_at
字段。$timestamps
和字段名称。config/logging.php
):'daily' => [ 'driver' => 'daily', 'level' => 'debug', 'days' => 30, // 保留30天日志 ],
通过以上配置,你可以轻松掌控Laravel中的时间管理,告别手动处理时间戳的烦恼!🚀
本文由 业务大全 于2025-08-25发表在【云服务器提供商】,文中图片由(业务大全)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vds.7tqx.com/wenda/730046.html
发表评论