Laravel迁移中Timestamp:能否拆分日期与时间?
关于Laravel时间戳提取日期/时间的问题
完全不需要单独创建独立的时间戳字段!$table->timestamps()生成的created_at和updated_at字段本质上是datetime类型(Laravel 8+默认是timestamp类型),你可以直接借助Laravel自动绑定的Carbon实例,轻松提取日期或时间部分。
具体实现方法:
直接调用Carbon方法:
Laravel会自动把这些时间戳字段转换成Carbon对象,所以你能直接用Carbon的方法拆分日期和时间:// 获取created_at的纯日期,格式如 "2024-05-20" $model->created_at->toDateString(); // 获取created_at的纯时间,格式如 "14:30:45" $model->created_at->toTimeString(); // 自定义格式也很方便,比如输出 "2024年05月20日 下午2点30分" $model->created_at->format('Y年m月d日 下午g点i分');用访问器简化调用:
如果需要频繁拆分,建议在模型里定义访问器,以后直接像用普通属性一样调用:// 在你的模型类中添加 public function getCreatedDateAttribute() { return $this->created_at->toDateString(); } public function getCreatedTimeAttribute() { return $this->created_at->toTimeString(); }使用时就这么简单:
echo $model->created_date; // 直接输出日期 echo $model->created_time; // 直接输出时间
什么时候需要单独建字段?
只有当业务逻辑要求必须把日期和时间分开存储(比如某些特殊的报表统计需求),或者需要频繁基于纯日期/时间做数据库查询且不想每次都转换时,才需要考虑创建独立字段。否则完全没必要多此一举,Carbon已经能搞定所有场景。
内容的提问来源于stack exchange,提问作者user9745930
相关产品推荐
相关产品推荐

